用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 commander
: npm 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