为什么我不能从命令行通过带有“ – ”的args到我的节点模块?

我正在使用package.json的脚本运行我的模块。 当我添加下面的命令行参数时,它只传递不以( – )开始的参数:

 npm run myscript -one two 

我得到的参数是:

 [ '/home/myhome/apps/node-v6.4.0-linux-x64/bin/node', '/home/myhome/Development/code/node_modules/.bin/mymodule', 'two' ] 

任何我在开始时添加一个或多个减号的参数都不会被传递。 即使我把它们放在像npm run myscript "--one two"npm run myscript "--one" two – 它仍然不会将它发送给我的模块。

我如何得到这些命令行参数?

经过更多的search和testing,看起来唯一的方法就是在你的参数-- -arg something注意--之后的空格 。 如果没有这个空间,这将是行不通的。 例如,这不会将arg传递给你: npm run myscript --ignore -arg e 。 你必须这样做:

 npm run myscript -- -one two 

请参阅: https : //github.com/npm/npm/issues/3494#issue-14832427

你将不得不像这样通过,然后你可以使用process.env.捕获它process.env.

 npm run myscript --one=somevalue --two=somevalue