如何通过npm run-script将标志传递给nodejs应用程序?

amo*_*one 10 javascript json node.js package.json

我有一个NodeJS文件,我通过"npm"命令运行.我一直试图列出所有参数(包括标志).如果我通过直接调用节点exe来运行它,它工作正常,但如果我使用该npm命令,我无法访问标志.

码:

console.dir(process.argv);
Run Code Online (Sandbox Code Playgroud)

当我像这样运行文件时,

node file.js arg1 arg2 -f --flag2
Run Code Online (Sandbox Code Playgroud)

我可以得到所有的论据.

[ '/usr/local/bin/node',
  '/.../file.js',
  'arg1',
  'arg2',
  '-f',
  '--flag2' ]
Run Code Online (Sandbox Code Playgroud)

但是如果我将一个npm runner添加到package.json文件并尝试使用它运行,我只能获取参数而不是标志.

npm run test arg1 arg2 -f --flag2
Run Code Online (Sandbox Code Playgroud)

结果:

[ '/usr/local/bin/node',
  '/.../file.js',
  'arg1',
  'arg2' ]
Run Code Online (Sandbox Code Playgroud)

package.json文件:

{
  "name": "name",
  "version": "1.0.0",
  "description": "",
  "main": "test.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "test" : "node test.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}
Run Code Online (Sandbox Code Playgroud)

基本上,节点不会将标志传递给正在运行的脚本.这有解决方案吗?我真正的项目有一个很长的路径,有很多参数,所以我想用一个快捷方式来测试它.

ale*_*mac 14

在参数前使用双破折号:

npm run test -- arg1 arg2 -f --flag2
Run Code Online (Sandbox Code Playgroud)

  • 如果你的参数看起来像 `--reset`,你可以使用 `npm run test -- --reset` (3认同)