UNPKG

brain-cli

Version:

A command line tool used to run projects

165 lines (164 loc) 6.86 kB
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; (function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "./index", "../constants/constants", "../utils/logs", "../webpack/webpackDllCompiler"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Command = void 0; const path = require('path'); const program = require('commander'); const chalk = require('chalk'); const index_1 = require("./index"); const constants_1 = require("../constants/constants"); const logs_1 = require("../utils/logs"); const webpackDllCompiler_1 = require("../webpack/webpackDllCompiler"); class Command { constructor() { this.commands = ['build', 'start', 'dev', 'dll']; this.env = { dev: '开发环境', dist: '预发布环境', prod: '生产环境', test: '测试环境' }; this.program = program; } setProcessEnv(env) { if (env === 'dev') { process.env.environment = constants_1.DEV; process.env.NODE_ENV = constants_1.DEV; } else if (env === 'dist') { process.env.environment = constants_1.DIST; process.env.NODE_ENV = constants_1.PRODUCTION; } else if (env === 'prod') { process.env.environment = constants_1.PRODUCTION; process.env.NODE_ENV = constants_1.PRODUCTION; } else if (env === 'test') { process.env.environment = constants_1.TEST; process.env.NODE_ENV = constants_1.PRODUCTION; } else if (env === 'report') { process.env.environment = constants_1.REPORT; process.env.NODE_ENV = constants_1.PRODUCTION; } else { process.env.environment = env; process.env.NODE_ENV = constants_1.PRODUCTION; } } version() { const pkg = require(path.resolve(__dirname, '../../package.json')); this.program.version(pkg.version); } option() { this.program .option('-V,--version', 'output the version number') .description(`${chalk.green('webpack building tool')}`); } setApps(options) { process.env.apps = ''; if (options && options['apps']) { if (typeof options['apps'] !== 'boolean') { // warning(`打包范围为[全部app]...`); process.env.apps = options['apps']; } } } dev() { this.program .command('dev') .option('--apps [value]', 'webpack Build a specified app name') .description('start webpack dev server for develoment mode') .action(options => { let env = 'dev'; this.setProcessEnv(env); this.setApps(options); logs_1.log(`当前编译环境为: ${process.env.NODE_ENV} [${this.env[env]}]`); index_1.default(env); }); } start() { this.program .command('start') .option('--apps [value]', 'webpack Build a specified app name') .description('start webpack dev server for develoment mode') .action(options => { let env = 'dev'; this.setProcessEnv(env); this.setApps(options); logs_1.log(`当前编译环境为: ${process.env.NODE_ENV} [${this.env[env]}]`); index_1.default(env); }); } dll() { this.program .command('dll') .description('webpack dll build') .action((env) => __awaiter(this, void 0, void 0, function* () { /** * 按需创建编译webpack dll manifest文件 */ yield webpackDllCompiler_1.default(); yield webpackDllCompiler_1.webpackDllPluginsCompiler(); })); } build() { this.program .command('build [env]') .option('-s', 'webpack build size analyzer tool, support size: default analyzer') .option('--apps [value]', 'webpack Build a specified app name') .option('--webpackJsonp [value]', 'webpack Generate a specified webpackJsonp name') .option('--cdn [value]', 'The resource distribution server') .description('webpack building') .action((env = 'prod', options) => { this.setProcessEnv(options.S ? 'report' : env); this.setApps(options); process.env.webpackJsonp = options['webpackJsonp'] ? options['webpackJsonp'] : 'webpackJsonpName'; process.env.cdnRelease = options['cdn'] ? options['cdn'] : ''; logs_1.log(`当前编译环境为: ${process.env.NODE_ENV} [${this.env[env] || env}]`); index_1.default(process.env.NODE_ENV, options); }); } command() { this.commands.forEach(cmd => { if (this[cmd]) { this[cmd].apply(this); } else { console.log(chalk.red(`The command [${cmd}] is not implemented!`)); } }); } parse() { this.program.parse(process.argv); } run() { this.version(); this.option(); this.command(); this.parse(); } } exports.Command = Command; });