为什么我不能从命令行将带有“-”的参数传递给我的节点模块?

Why can't I pass args with a "-" to my node module from the command line?

我是 运行 我的模块,来自 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'
]

我在开头添加一个或多个减号的任何 arg 都不会通过。即使我将它们放在 npm run myscript "--one two"npm run myscript "--one" two 之类的引号中 - 它仍然不会将其发送到我的模块。

如何获取这些命令行参数?

你必须这样通过,然后你可以使用process.env.

捕获它
npm run myscript --one=somevalue --two=somevalue

经过更多的搜索和测试,似乎让它们通过的唯一方法是在您的 args 前加上前缀 -- -arg something注意 -- 之后的 space。没有 space,它将无法工作。例如,这将 而不是 将 arg 传递给您:npm run myscript --ignore -arg e。你必须这样做:

npm run myscript -- -one two

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