将parameter passing给package.json中的npm脚本

有没有办法在package.json命令中传递参数?

我的脚本:

"scripts": { "test": "node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet" } 

cli npm run test 8080 production

然后在mytest.js我想用process.argv得到参数

将parameter passing给脚本

为了传递参数给npm脚本 ,为了安全起见,你应该提供它们。

在你的情况下, --可以省略。 他们的行为是一样的:

 npm run test -- 8080 production npm run test 8080 production 

但是当参数包含选项(例如-p )时, --是必须的,否则npm将parsing它们并将它们视为npm的选项。

 npm run test -- 8080 -p 

使用位置参数

参数只是附加到要运行的脚本。 您的$1 $2将不会被解决。 npm实际运行的命令是:

 node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet "8080" "production" 

为了使位置variables在npm脚本中起作用,将命令包装在shell函数中:

 "scripts": { "test": "run(){ node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet; }; run" } 

或者使用工具scripty并把你的脚本放在一个单独的文件中。

package.json

 "scripts": { "test": "scripty" } 

脚本/testing

 #!/usr/bin/env sh node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet