import minimist from 'minimist' const strIsNull = (str: string | undefined) => str === null || str === undefined || str === '' const argv: { _: Array [key: string]: string | number | boolean | Array } = minimist(process.argv.slice(2)) /** process.env 参数 格式化 */ export const parseEnv = () => { let env: { [key: string]: any } = {} for (const key in process.env) { const v: string = process.env[key] ?? '' if (strIsNull(v)) env[key] = null else if (!isNaN(Number(v))) env[key] = Number(v) else env[key] = v } return env } export type TArgvs = { command: string [key: string]: boolean | string | Function | string[] alias: (origin: string, replaceKey: string) => TArgvs } /** 解析 process.argv 参数 */ export const parseArgv = (): TArgvs => { const argvs: TArgvs = { command: argv._[0], ...argv, alias: (origin: string, replacedKey: string) => { if (argvs[origin]) { argvs[replacedKey] = argvs[origin] } return argvs } } return argvs }