在 package.json 中向 npm 脚本传递参数

20 浏览
0 Comments

在 package.json 中向 npm 脚本传递参数

这个问题已经有了答案:

如何将命令行参数传递给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日
0
0 Comments

注意:它只在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

0