jarvis-react
Version:
React脚手架及命令行工具合集
59 lines (58 loc) • 2.32 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 webpack_1 = __importDefault(require("webpack"));
const webpack_dev_server_1 = __importDefault(require("webpack-dev-server"));
const webpack_2 = require("../config/webpack");
const devServer_1 = require("../config/devServer");
const function_1 = require("../util/function");
function start() {
function_1.logger.cyan('start development server...');
process.env.NODE_ENV = 'development';
const spinner = ora_1.default();
const userConfig = function_1.getUserConfig();
const options = {
...userConfig,
cwd: process.cwd(),
isDevelopment: true,
isProduction: false,
port: 3000,
};
const webpackConfig = webpack_2.getWebpackConfig(options);
const serverConfig = devServer_1.getServerConfig(options);
const compiler = webpack_1.default(webpackConfig);
compiler.hooks.invalid.tap('invalid', () => {
spinner.start('start compile...');
});
compiler.hooks.done.tap('done', (stats) => {
const info = stats.toJson({ all: false, errors: true, warnings: true, timings: true });
if (Array.isArray(info.errors) && info.errors.length > 0) {
spinner.fail('fail to compile');
info.errors.forEach((item) => {
console.error(item.moduleName);
console.error(item.message);
});
return;
}
if (Array.isArray(info.warnings) && info.warnings.length > 0) {
spinner.warn('compile with warnings');
info.warnings.forEach((item) => {
console.error(item.moduleName);
console.error(item.message);
});
}
spinner.succeed(`success to compile with ${function_1.convertTime(info.time)} \n`);
});
// @ts-ignore
const server = new webpack_dev_server_1.default(compiler, serverConfig);
server.listen(options.port, 'localhost', (err) => {
if (err) {
function_1.logger.error('compile with errors');
throw err;
}
});
}
module.exports = start;