cli: added getOutputsForRole utility

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2022-01-29 18:55:31 +01:00
parent 336b310151
commit f8e529030e
3 changed files with 24 additions and 16 deletions
+4 -15
View File
@@ -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<void> {
const packages = await PackageGraph.listTargetPackages();
@@ -38,11 +30,8 @@ export async function command(): Promise<void> {
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<void> {
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'),
+1 -1
View File
@@ -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';
+19
View File
@@ -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<Output> {
const outputs = new Set<Output>();
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;
}