Node.js 自带的 child_process
中,有个spawnSync
方法,启动同步的子进程,执行命令。可通过stdio: 'inherit',
设置,将相应的 stdio 流传入/传出父进程。
这样就可以对命令进行一些封装,如增加自定义的环境变量等。
如封装一个 cus-vite.js:
const { spawnSync } = require('child_process')
const args = process.argv.slice(2)
spawnSync('vite', args, {
shell: true,
stdio: 'inherit',
env: {
CUSTOM_ENV_FLAG: 'ENV1',
...process.env,
},
})
在vite.config.js 中就可以读取到自定义的环境变量信息了:
console.log(process.env.CUSTOM_ENV_FLAG, 'CUSTOM_ENV_FLAG')
在 package.json 中就可以使用这个 node 脚本启动、构建:
"dev": "node cus-vite.js",
"build": "node cus-vite.js build",
通过这样的封装,可以对命令进行一定的拓展,可以针对参数再进行特定的处理,如实现不同环境配置等。