66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
const { existsSync } = require('fs');
|
|
const { join } = require('path');
|
|
const yParser = require('yargs-parser');
|
|
const chalk = require('chalk');
|
|
const signale = require('signale');
|
|
|
|
// print version and @local
|
|
const args = yParser(process.argv.slice(2));
|
|
if (args.v || args.version) {
|
|
console.log(require('father-build/package').version);
|
|
if (existsSync(join(__dirname, '../.local'))) {
|
|
console.log(chalk.cyan('@local'));
|
|
}
|
|
process.exit(0);
|
|
}
|
|
|
|
// Notify update when process exits
|
|
const updater = require('update-notifier');
|
|
const pkg = require('father-build/package.json');
|
|
updater({ pkg }).notify({ defer: true });
|
|
|
|
function stripEmptyKeys(obj) {
|
|
Object.keys(obj).forEach((key) => {
|
|
if (!obj[key] || (Array.isArray(obj[key]) && !obj[key].length)) {
|
|
delete obj[key];
|
|
}
|
|
});
|
|
return obj;
|
|
}
|
|
|
|
function build() {
|
|
// Parse buildArgs from cli
|
|
const buildArgs = stripEmptyKeys({
|
|
esm: args.esm && { type: args.esm === true ? 'rollup' : args.esm },
|
|
cjs: args.cjs && { type: args.cjs === true ? 'rollup' : args.cjs },
|
|
umd: args.umd && { name: args.umd === true ? undefined : args.umd },
|
|
file: args.file,
|
|
target: args.target,
|
|
entry: args._,
|
|
});
|
|
|
|
if (buildArgs.file && buildArgs.entry && buildArgs.entry.length > 1) {
|
|
signale.error(
|
|
new Error(
|
|
`Cannot specify file when have multiple entries (${buildArgs.entry.join(
|
|
', ',
|
|
)})`,
|
|
),
|
|
);
|
|
process.exit(1);
|
|
}
|
|
|
|
require('./rollup-build')({
|
|
cwd: args.root || process.cwd(),
|
|
watch: args.w || args.watch,
|
|
buildArgs,
|
|
}).catch((e) => {
|
|
signale.error(e);
|
|
process.exit(1);
|
|
});
|
|
}
|
|
|
|
build();
|