jarvis-react
Version:
React脚手架及命令行工具合集
53 lines (52 loc) • 2.11 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const ora_1 = __importDefault(require("ora"));
const fs_extra_1 = __importDefault(require("fs-extra"));
const webpack_1 = __importDefault(require("webpack"));
const webpack_2 = require("../config/webpack");
const function_1 = require("../util/function");
function app(options) {
function_1.logger.cyan('start build app with webpack...');
const spinner = ora_1.default();
const publicDirPath = function_1.resolveProjectFile('public');
const outDirPath = function_1.resolveProjectFile('dist');
spinner.start('clean dist directory');
fs_extra_1.default.removeSync(outDirPath);
spinner.succeed();
spinner.start('copy public files');
fs_extra_1.default.copySync(publicDirPath, outDirPath, {
dereference: true,
filter: (file) => !file.includes('index.html'),
});
spinner.succeed();
spinner.start('start to compile with webpack ...');
const config = webpack_2.getWebpackConfig(options);
const compiler = webpack_1.default(config);
compiler.run((err, stats) => {
if (err) {
spinner.fail('compile with errors');
throw err;
}
const info = stats?.toJson() || {};
if (Array.isArray(info.errors) && info.errors.length > 0) {
spinner.fail('compile with errors');
info.errors.forEach((item) => {
console.error(item.moduleName);
console.error(item.message);
});
process.exit(1);
}
if (Array.isArray(info.warnings) && info.warnings.length > 0) {
spinner.info('compile with warnings');
info.warnings.forEach((item) => {
console.error(item.moduleName);
console.error(item.message);
});
}
spinner.succeed(`compile success in ${function_1.convertTime(info.time)}`);
});
}
exports.default = app;