UNPKG

@gdjiami/cli

Version:

CLI for build front end project.

196 lines (195 loc) 6.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var fs_extra_1 = tslib_1.__importDefault(require("fs-extra")); var yargs_1 = tslib_1.__importDefault(require("yargs")); var path_1 = tslib_1.__importDefault(require("path")); var utils_1 = require("./utils"); var middlewares_1 = tslib_1.__importDefault(require("./middlewares")); process.on('uncaughtException', function (err) { throw err; }); var cwd = process.cwd(); var cmdDir = path_1.default.resolve(__dirname, '../'); var pkg = fs_extra_1.default.readJSONSync(path_1.default.join(cmdDir, 'package.json')); var name = pkg.name; var version = pkg.version; var cmdName = Object.keys(pkg.bin)[0]; yargs_1.default .scriptName(cmdName) .command('create [name]', 'Create React project', { force: { description: 'disable template cache', alias: 'f', type: 'boolean' }, at: { description: 'sepcify jm-cli version', alias: 'a', type: 'string', requiresArg: true }, template: { description: 'template name in npm, file:// or url', alias: 't', type: 'string', requiresArg: true }, }, middlewares_1.default(function (argv) { require('./cmds/create').default(cwd, cmdDir, { name: argv.name, version: argv.at, template: argv.template, }); })) .command(['start', '$0'], 'Start development server', { entry: { description: 'sepcify entry names to build. example: a,b', alias: 'e', type: 'string', requiresArg: true, coerce: utils_1.transformString2Array, }, 'auto-reload': { description: 'auto reload electron main process', type: 'boolean', alias: 'a', default: true, }, 'electron-inspect': { description: 'activate inspector on host:port, default :5858', type: 'string', }, 'electron-inspect-brk': { description: 'activate inspector on host:port and break at start of user script, default :5858', type: 'string', }, }, middlewares_1.default(function (argv) { require('./cmds/start').default(argv); })) .command('build', 'Build project for production', { entry: { description: 'sepcify entry names to build. example: a,b', alias: 'e', type: 'string', requiresArg: true, coerce: utils_1.transformString2Array, }, 'cache-by-npm-verison': { description: 'cache build output by npm version', type: 'boolean', }, 'dont-clean': { description: "don't clean dist folder", type: 'boolean', }, 'dont-copy': { description: "don't copy files in `public`", type: 'boolean', }, group: { desc: "sepcify entry group. It will override --entry. example --group.client=a,b --group.server=c,d", type: 'string', requiresArg: true, coerce: utils_1.transformGroup, }, measure: { description: 'measures your webpack build speed', alias: 'm', type: 'boolean', }, }, middlewares_1.default(function (argv) { var _a = argv, entry = _a.entry, group = _a.group, other = tslib_1.__rest(_a, ["entry", "group"]); if (group && group.default) { entry = tslib_1.__spreadArrays((entry || []), group.default); group = undefined; } require('./cmds/build').default(tslib_1.__assign({ entry: entry, group: group }, other)); })) .command('analyze', 'Analyze webpack bundle', { entry: { description: 'sepcify entry names to build. example: a,b', alias: 'e', type: 'string', requiresArg: true, coerce: utils_1.transformString2Array, }, group: { desc: "sepcify entry group. It will override --entry. example --group.client=a,b --group.server=c,d", type: 'string', requiresArg: true, coerce: utils_1.transformGroup, }, }, middlewares_1.default(function (argv) { require('./cmds/analyze').default(argv); })) .command('dll', 'generate or update Webpack Dll files', {}, middlewares_1.default(function (argv) { require('./cmds/dll').default(argv); })) .command('serve', 'serve builded content', { gzip: { description: 'enable gzip', alias: 'g', type: 'boolean', default: true, }, cors: { description: 'enable CORS via the `Access-Control-Allow-Origin` header', type: 'boolean', }, open: { description: 'open browser window after starting the server', alias: 'o', type: 'boolean', }, f: { description: 'fall back to /index.html if nothing else matches', alias: 'history-api-fallback', type: 'boolean', default: true, }, }, middlewares_1.default(function (argv) { require('./cmds/serve').default(argv); })) .command('polyfill', 'generate polyfill base on browserslist', { out: { alias: 'o', type: 'string', default: 'public/polyfill.js', }, }, middlewares_1.default(function (argv) { require('./cmds/polyfill').default(argv); })) .command('upgrade', "upgrade " + name + " in current project or global", { 'dry-run': { alias: 'd', type: 'boolean', }, global: { description: 'global upgrade', alias: 'g', type: 'boolean', }, yarn: { description: 'use yarn to upgrade. default is true if `yarn` command founded', alias: 'y', type: 'boolean', }, // yargs 可以自动将yarn置为false 'no-yarn': { description: 'no use yarn to upgrade.', type: 'boolean', }, level: { description: "choose semver level. Global mode default is 'major', local mode default is 'minor'", alias: 'l', type: 'string', choices: ['major', 'minor', 'patch'], }, }, middlewares_1.default(function (argv) { require('./cmds/upgrade').default(argv); })) .command('clean', 'clean cache', {}, middlewares_1.default(function (argv) { require('./cmds/cleanCache').default(); })) // .command('deploy', 'TODO', {}, wrap(argv => {})) // .command('test', 'TODO', {}, wrap(argv => {})) .command('version', 'show version', {}, function (argv) { console.log(version); }) .command('help', 'show helps', {}, function () { yargs_1.default.showHelp(); }) .version(version) .option('inspect', { description: 'inspect webpack configuration', type: 'boolean', }) .strict() .help().argv;