brain-cli
Version:
A command line tool used to run projects
81 lines (80 loc) • 3.62 kB
JavaScript
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", "./libs/webpack/webpackDevServer", "./libs/webpack/webpackDllCompiler", "./libs/settings/EConfig", "./libs/utils/ip", "./libs/utils/logs", "./libs/constants/constants"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const webpackDevServer_1 = require("./libs/webpack/webpackDevServer");
const webpackDllCompiler_1 = require("./libs/webpack/webpackDllCompiler");
const EConfig_1 = require("./libs/settings/EConfig");
const ip_1 = require("./libs/utils/ip");
const logs_1 = require("./libs/utils/logs");
const constants_1 = require("./libs/constants/constants");
const openBrowser = require('open');
// const config = require('./webpack.config');
// const {port} = config;
function autoOpenBrowser(open, ip, port, targetApp) {
const { name: projectName, devServer: { https } } = EConfig_1.default.getInstance();
if (open) {
if (!targetApp) {
logs_1.warning(`忽略自动打开浏览器功能:`);
logs_1.warning(`请提供指定需要app name作为相对路径`);
}
else {
openBrowser(`${https ? 'https' : 'http'}://${ip}:${port}/${constants_1.URL_PREFIX}/${projectName}/${targetApp}`);
}
}
}
/**
* 程序入口点开始方法
*/
function start(options) {
return __awaiter(this, void 0, void 0, function* () {
try {
/**
* 按需创建编译webpack dll manifest文件
*/
yield webpackDllCompiler_1.default();
yield webpackDllCompiler_1.webpackDllPluginsCompiler();
/**
* 开启webpack dev server
*/
yield webpackDevServer_1.default();
/**
* 获取配置文件
*/
const { open, server, apps, defaultPort } = EConfig_1.default.getInstance();
let ip = server;
if (server === `0.0.0.0`) {
/**
* 显示可选IP列表
*/
ip_1.displayAvailableIPs();
/**
* 开启后判断配置文件是否需要自动打开浏览器
*/
ip = `localhost`;
}
autoOpenBrowser(open, ip, defaultPort, apps[0]);
}
catch (e) {
console.error(e);
}
});
}
exports.default = start;
});