在 package.json 中向 npm 脚本传递参数
在 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
获取参数
admin 更改状态以发布 2023年5月22日
注意:它只在shell环境下工作,而不是Windows的cmd。你应该在Windows上使用类似Git Bash的bash,或者如果你使用win10,则尝试Linux子系统。
将参数传递给脚本
要将参数传递给npm脚本,你应该在--
之后提供它们以确保安全。
在你的情况下,可以省略--
。它们的行为相同:
npm run test -- 8080 production npm run test 8080 production
但是当参数包含选项(例如-p
)时,--
是必需的,否则npm将解析它们并将它们视为npm的选项。
npm run test -- 8080 -p
使用位置参数
参数只是附加到要运行的脚本中。你的$1
$2
不会得到解析。npm实际运行的命令是:
node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet "8080" "production"
为了使位置变量在npm脚本中工作,将命令包装在shell函数中:
"scripts": { "test": "run(){ node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet; }; run" }
或者使用工具scripty并将脚本放在单独的文件中。
package.json:
"scripts": { "test": "scripty" }
scripts/test:
#!/usr/bin/env sh node mytest.js $1 $2 | node_modules/tap-difflet/bin/tap-difflet