@fesjs/fes
Version:
一个好用的前端管理台快速开发框架
57 lines (53 loc) • 1.85 kB
JavaScript
;
var _nodeProcess = _interopRequireDefault(require("node:process"));
var _utils = require("@fesjs/utils");
var _package = _interopRequireDefault(require("../package.json"));
var _serviceWithBuiltIn = require("./serviceWithBuiltIn");
var _getCwd = _interopRequireDefault(require("./utils/getCwd"));
var _getPkg = _interopRequireDefault(require("./utils/getPkg"));
var _hackFesInBuild = require("./hackFesInBuild");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* @copy 该文件代码大部分出自 umi,有需要请参考:
* https://github.com/umijs/umi/blob/master/packages/umi/src/forkedDev.ts
*/
const args = (0, _utils.yParser)(_nodeProcess.default.argv.slice(2));
let closed = false;
function onSignal(signal, service) {
if (closed) return;
closed = true;
// 退出时触发插件中的onExit事件
service.applyPlugins({
key: 'onExit',
type: service.ApplyPluginsType.event,
args: {
signal
}
});
_nodeProcess.default.exit(0);
}
(async () => {
try {
_nodeProcess.default.env.NODE_ENV = 'development';
(0, _hackFesInBuild.hackFesInBuild)();
const service = new _serviceWithBuiltIn.Service({
cwd: (0, _getCwd.default)(),
pkg: (0, _getPkg.default)(_nodeProcess.default.cwd()),
fesPkg: _package.default
});
await service.run({
name: 'dev',
args
});
// kill(2) Ctrl-C
_nodeProcess.default.once('SIGINT', () => onSignal('SIGINT', service));
// kill(3) Ctrl-\
_nodeProcess.default.once('SIGQUIT', () => onSignal('SIGQUIT', service));
// kill(15) default
_nodeProcess.default.once('SIGTERM', () => onSignal('SIGTERM', service));
} catch (e) {
console.error(_utils.chalk.red(e.message));
console.error(e.stack);
_nodeProcess.default.exit(1);
}
})();