用npm start传入CLI选项

我试图通过命令行选项传递给node使用npm start ,即--debug

我可以传递一个附加到相应启动命令的参数。 例如, npm start -- --debug将执行node server.js "--debug" (假设"start":"node server.js" )。 但是,这是行不通的。 --debug是一个选项,必须在脚本之前( server.js )。 更具体地说,我试图运行node "--debug" server.js

有没有干净的方式来做到这一点?

谢谢。

编辑:约束是我不能编辑package.json文件。 只能编辑npm命令。

如何添加一个debug脚本到package.json

 { "scripts" : { "start" : "node app.js", "debug" : "node --debug app.js" } } 

用它与npm run debug

你可以在没有模块的情况下做到这一点,但这是指挥官的npm install --save commandernpm install --save commander

 var program = require('commander'); program .version('0.0.1') .option('-d, --debug', 'Debug Mode') .parse(process.argv); if (program.debug) { // do debug stuff }else{ // proceed normally } 

如果你不想使用指挥官,节点暴露这样的参数(process.argv):

['node', 'yourScript.js', '--debug']

所以你可以检查if(process.argv.length >= 3 && process.argv[2] == '--debug') doStuff();

我还没有find通过npm start命令传递的方法。 下面的黑客可以工作,但注意比赛条件。

 ((sleep 2 && kill -s USR1 $(pgrep node)) &) && npm start -d