将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