From f8e529030eeb788ff814b0fe21635e30de932dbf Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 29 Jan 2022 18:55:31 +0100 Subject: [PATCH] cli: added getOutputsForRole utility Signed-off-by: Patrik Oldsberg --- packages/cli/src/commands/repo/build.ts | 19 ++++--------------- packages/cli/src/lib/builder/index.ts | 2 +- packages/cli/src/lib/builder/packager.ts | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/packages/cli/src/commands/repo/build.ts b/packages/cli/src/commands/repo/build.ts index 50198772d7..7b1e4771ec 100644 --- a/packages/cli/src/commands/repo/build.ts +++ b/packages/cli/src/commands/repo/build.ts @@ -16,17 +16,9 @@ import chalk from 'chalk'; import { relative as relativePath } from 'path'; -import { buildPackages, Output } from '../../lib/builder'; +import { buildPackages, getOutputsForRole } from '../../lib/builder'; import { PackageGraph } from '../../lib/monorepo'; import { paths } from '../../lib/paths'; -import { getRoleInfo } from '../../lib/role'; - -const outputMap = { - esm: Output.esm, - cjs: Output.cjs, - types: Output.types, - bundle: undefined, -}; export async function command(): Promise { const packages = await PackageGraph.listTargetPackages(); @@ -38,11 +30,8 @@ export async function command(): Promise { return []; } - const roleInfo = getRoleInfo(role); - const outputs = roleInfo.output - .map(output => outputMap[output]) - .filter((x): x is Output => Boolean(x)); - if (outputs.length === 0) { + const outputs = getOutputsForRole(role); + if (outputs.size === 0) { console.warn(`Ignored ${pkg.packageJson.name} because it has no output`); return []; } @@ -63,7 +52,7 @@ export async function command(): Promise { return { targetDir: pkg.dir, - outputs: new Set(outputs), + outputs, logPrefix: `${chalk.cyan(relativePath(paths.targetRoot, pkg.dir))}: `, // TODO(Rugvip): Use commander to parse the script and grab these instead minify: buildScript.includes('--minify'), diff --git a/packages/cli/src/lib/builder/index.ts b/packages/cli/src/lib/builder/index.ts index de6ccac0ae..00cc463cfb 100644 --- a/packages/cli/src/lib/builder/index.ts +++ b/packages/cli/src/lib/builder/index.ts @@ -14,6 +14,6 @@ * limitations under the License. */ -export { buildPackage, buildPackages } from './packager'; +export { buildPackage, buildPackages, getOutputsForRole } from './packager'; export { Output } from './types'; export type { BuildOptions } from './types'; diff --git a/packages/cli/src/lib/builder/packager.ts b/packages/cli/src/lib/builder/packager.ts index 9ef1954677..c4963373fa 100644 --- a/packages/cli/src/lib/builder/packager.ts +++ b/packages/cli/src/lib/builder/packager.ts @@ -22,6 +22,7 @@ import { paths } from '../paths'; import { makeRollupConfigs } from './config'; import { BuildOptions, Output } from './types'; import { buildTypeDefinitions } from './buildTypeDefinitions'; +import { getRoleInfo } from '../role'; export function formatErrorMessage(error: any) { let msg = ''; @@ -141,3 +142,21 @@ export const buildPackages = async ( await Promise.all(buildTasks); }; + +export function getOutputsForRole(role: string): Set { + const outputs = new Set(); + + for (const output of getRoleInfo(role).output) { + if (output === 'cjs') { + outputs.add(Output.cjs); + } + if (output === 'esm') { + outputs.add(Output.esm); + } + if (output === 'types') { + outputs.add(Output.types); + } + } + + return outputs; +}