@mypaas/hcm-cli
Version:
Vant Cli 是一个 Vue 组件库构建工具,通过 Vant Cli 可以快速搭建一套功能完备的 Vue 组件库。
69 lines (68 loc) • 2.44 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.compileSite = void 0;
const chalk_1 = __importDefault(require("chalk"));
const address_1 = __importDefault(require("address"));
const webpack_1 = __importDefault(require("webpack"));
const webpack_dev_server_1 = __importDefault(require("webpack-dev-server"));
const lodash_1 = require("lodash");
const portfinder_1 = require("portfinder");
const constant_1 = require("../common/constant");
const webpack_site_dev_1 = require("../config/webpack.site.dev");
const webpack_site_prd_1 = require("../config/webpack.site.prd");
function logServerInfo(port) {
const local = `http://localhost:${port}/`;
const network = `http://${address_1.default.ip()}:${port}/`;
console.log('\n Site running at:\n');
console.log(` ${chalk_1.default.bold('Local')}: ${chalk_1.default.hex(constant_1.GREEN)(local)} `);
console.log(` ${chalk_1.default.bold('Network')}: ${chalk_1.default.hex(constant_1.GREEN)(network)}`);
}
function runDevServer(port, config) {
const server = new webpack_dev_server_1.default(webpack_1.default(config), Object.assign(Object.assign({}, config.devServer), { port }));
// this is a hack to disable wds status log
server.showStatus = function () { };
const host = lodash_1.get(config.devServer, 'host', 'localhost');
server.listen(port, host, (err) => {
if (err) {
console.log(err);
}
});
}
function watch() {
const config = webpack_site_dev_1.getSiteDevConfig();
portfinder_1.getPort({
port: config.devServer.port,
}, (err, port) => {
if (err) {
console.log(err);
return;
}
logServerInfo(port);
runDevServer(port, config);
});
}
function build() {
return new Promise((resolve, reject) => {
const config = webpack_site_prd_1.getSitePrdConfig();
webpack_1.default(config, (err, stats) => {
if (err || stats.hasErrors()) {
reject();
}
else {
resolve(true);
}
});
});
}
async function compileSite(production = false) {
if (production) {
await build();
}
else {
watch();
}
}
exports.compileSite = compileSite;