imod
Version:
A bundler for tiny modules, powered by Rollup.
76 lines • 2.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const yargs = require("yargs");
const path = require("path");
const colors_1 = require("colors");
const utils_1 = require("./utils");
const index_1 = require("./index");
const initTemplate_1 = require("./initTemplate");
const updater = require("npm-updater");
const pkg = require("../package.json");
const KEYWORDS = ['run', 'build', 'dev', 'init'];
// check version
updater({
package: pkg,
abort: false,
interval: '1d',
registry: 'https://registry.npm.taobao.org',
updateMessage: colors_1.yellow(`\nplease run \`yarn global add ${pkg['name']}@latest\` to update\n`)
});
const setNodeEnv = (mode) => { mode && typeof mode === 'string' && (process.env.NODE_ENV = mode); };
/* tslint:disable no-unused-expression */
yargs
.usage('$0 <cmd> [args]')
.command('dev', '[watching mod]', () => {
const { verbose = false, mode } = yargs.argv;
setNodeEnv(mode);
new index_1.default({ cwd: process.cwd(), verbose }).dev();
})
.command('build', '[build mod]', () => {
const { verbose = false, mode } = yargs.argv;
setNodeEnv(mode);
new index_1.default({ cwd: process.cwd(), verbose }).build();
})
// imod init . --templateName=module --lite=true
.command('init', '[init a demo: e.g: `imod init .`]', () => {
yargs
.alias('m', 'templateName')
.alias('l', 'lite');
const cwd = process.cwd();
let { lite = false, templateName = false } = yargs.argv;
let [targetFolder = '.'] = yargs.argv._.slice(1);
templateName = typeof templateName === 'boolean' ? 'module' : templateName;
targetFolder = path.resolve(cwd, targetFolder + '');
initTemplate_1.default({ templateName, targetFolder, lite });
// console.log(templateName, targetFolder, lite)
})
.version()
.alias('v', 'version')
.help()
.alias('h', 'help')
.argv;
const subCmd = (() => {
let s = process.argv[2] || '';
if (/^[a-z]+/.test(s))
return s;
return;
})();
if (subCmd && !KEYWORDS.includes(subCmd)) {
yargs.command(subCmd, 'subCmd', {}, async () => {
try {
const Module = utils_1.mRequire(require(`moto-plugin-${subCmd}`));
await new Module().run();
}
catch (e) {
console.log(e.code);
}
}).argv;
}
if (process.argv.length < 3) {
let logo = ' _ __ __ _\n (_) \\/ | | |\n _| \\ / | ___ __| |\n | | |\\/| |/ _ \\ / _` |\n | | | | | (_) | (_| |\n |_|_| |_|\\___/ \\__,_|';
logo += ` @${pkg['version']}` + '\n';
console.log(colors_1.green(logo));
console.log(colors_1.gray('https://github.com/haozi/iMod'));
console.log(yargs.getUsageInstance().help());
}
//# sourceMappingURL=cli.js.map