65 lines
1.3 KiB
TypeScript
65 lines
1.3 KiB
TypeScript
import { deepmerge, logger, yParser } from '@umijs/utils';
|
|
import { BUILD_COMMANDS, DEV_COMMAND } from './constants';
|
|
import {
|
|
checkLocal,
|
|
checkVersion as checkNodeVersion,
|
|
setNoDeprecation,
|
|
setNodeTitle,
|
|
} from './node';
|
|
import { Service } from './service';
|
|
|
|
interface IOpts {
|
|
args?: yParser.Arguments;
|
|
}
|
|
|
|
export async function run(_opts?: IOpts) {
|
|
checkNodeVersion();
|
|
checkLocal();
|
|
setNodeTitle();
|
|
setNoDeprecation();
|
|
|
|
const args =
|
|
_opts?.args ||
|
|
yParser(process.argv.slice(2), {
|
|
alias: {
|
|
version: ['v'],
|
|
help: ['h'],
|
|
},
|
|
boolean: ['version'],
|
|
});
|
|
const command = args._[0];
|
|
|
|
if (command === DEV_COMMAND) {
|
|
process.env.NODE_ENV = 'development';
|
|
} else if (BUILD_COMMANDS.includes(command)) {
|
|
process.env.NODE_ENV = 'production';
|
|
}
|
|
|
|
try {
|
|
const service = new Service();
|
|
|
|
await service.run2({
|
|
name: command,
|
|
args: deepmerge({}, args),
|
|
});
|
|
|
|
// handle restart for dev command
|
|
if (command === DEV_COMMAND) {
|
|
async function listener(data: any) {
|
|
if (data?.type === 'RESTART') {
|
|
// off self
|
|
process.off('message', listener);
|
|
|
|
// restart
|
|
run({ args });
|
|
}
|
|
}
|
|
|
|
process.on('message', listener);
|
|
}
|
|
} catch (e: any) {
|
|
logger.error(e);
|
|
process.exit(1);
|
|
}
|
|
}
|