如何向使用nodenv的NPM脚本传递参数?
解决node-env-run脚本传参问题
问题出在node-env-run(即你使用的nodenv命令)需要通过--来区分自身参数和要传递给目标脚本的参数,结合npm脚本的传参规则,有两种可行方案:
方案1:运行时传递完整参数链
保持现有package.json脚本不变:
"scripts": { "run-jobs": "nodenv tests/run-jobs.js" }
运行时使用以下命令传递任务名称:
npm run run-jobs -- -- myjob1 myjob2
- 第一个
--是npm的语法,用来将后续参数传递给脚本里的nodenv命令 - 第二个
--是node-env-run的语法,用来将后续参数传递给你的tests/run-jobs.js脚本
此时在tests/run-jobs.js中,可通过process.argv.slice(2)获取传递的任务名称(process.argv前两位是node路径和脚本路径,从索引2开始是你传入的myjob1、myjob2)。
方案2:修改package.json简化命令
修改脚本,提前加上node-env-run所需的--:
"scripts": { "run-jobs": "nodenv tests/run-jobs.js --" }
运行时只需用npm的--传递参数:
npm run run-jobs -- myjob1 myjob2
这种方式更简洁,效果和方案1一致,参数同样会被传递到你的脚本中。
验证方式
在tests/run-jobs.js开头添加一行代码打印参数:
console.log('传入的任务参数:', process.argv.slice(2));
运行对应命令后,就能在控制台看到你传递的任务名称。
内容的提问来源于stack exchange,提问作者Raphi OKG
相关产品推荐
相关产品推荐

