如何在运行npm的createenv脚本时传递并读取命令行参数
解决npm脚本命令行参数传递问题
问题原因
npm run 命令后直接跟的参数,默认不会自动传递给脚本内部的子命令(比如这里的node cliTest.js),需要通过特定语法显式传递。
解决方案
1. 修改package.json中的脚本
将createenv脚本修改为:
"scripts": { "test" : "npm run module1 || npm run posttest", "createenv": "node cliTest.js -- $@ && npm run test" }
--:用于告诉npm将后续参数传递给脚本内的子命令$@:bash环境变量,代表所有传入的命令行参数,会把参数原样传递给node cliTest.js
2. 正确的命令执行方式
运行时需要在参数前加上--:
npm run createenv -- foobar
3. 在cliTest.js中获取参数
process.argv数组的前两位固定是node执行路径和脚本文件路径,从第三位开始是传递的参数,所以可以通过切片获取:
// cliTest.js console.log(process.argv.slice(2)); // 输出: ['foobar']
这样就能成功获取到传入的foobar参数了。
内容的提问来源于stack exchange,提问作者Anon
相关产品推荐
相关产品推荐

