@fesjs/fes
Version:
一个好用的前端管理台快速开发框架
59 lines (58 loc) • 2.17 kB
JavaScript
;
var _nodeProcess = _interopRequireDefault(require("node:process"));
var _utils = require("@fesjs/utils");
var _package = _interopRequireDefault(require("../package.json"));
var _hackFesInBuild = require("./hackFesInBuild");
var _serviceWithBuiltIn = require("./serviceWithBuiltIn");
var _fork = _interopRequireDefault(require("./utils/fork"));
var _getCwd = _interopRequireDefault(require("./utils/getCwd"));
var _getPkg = _interopRequireDefault(require("./utils/getPkg"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const requiredVersion = _package.default.engines.node;
function checkNodeVersion(wanted, id) {
if (!_utils.semver.satisfies(_nodeProcess.default.version, wanted, {
includePrerelease: true
})) {
console.log(_utils.chalk.red(`You are using Node ${_nodeProcess.default.version}, but this version of ${id} requires Node ${wanted}.\nPlease upgrade your Node version.`));
_nodeProcess.default.exit(1);
}
}
checkNodeVersion(requiredVersion, '@fesjs/fes');
const rawArgv = _nodeProcess.default.argv.slice(2);
const args = (0, _utils.yParser)(rawArgv);
(async () => {
try {
const command = args._[0];
if (command === 'dev') {
const child = (0, _fork.default)({
scriptPath: require.resolve('./forkedDev')
});
// http://nodejs.cn/api/process/signal_events.html
_nodeProcess.default.on('SIGINT', () => {
child.kill('SIGINT');
_nodeProcess.default.exit();
});
_nodeProcess.default.on('SIGTERM', () => {
child.kill('SIGTERM');
_nodeProcess.default.exit();
});
} else {
(0, _hackFesInBuild.hackFesInBuild)();
if (command === 'build') {
_nodeProcess.default.env.NODE_ENV = 'production';
}
await new _serviceWithBuiltIn.Service({
cwd: (0, _getCwd.default)(),
pkg: (0, _getPkg.default)(_nodeProcess.default.cwd()),
fesPkg: _package.default
}).run({
args,
rawArgv
});
}
} catch (e) {
console.error(_utils.chalk.red(e.message));
console.error(e.stack);
_nodeProcess.default.exit(1);
}
})();