【问题标题】:Arguments of npm scriptnpm 脚本的参数
【发布时间】:2020-07-07 11:53:48
【问题描述】:

我有以下 package.json 文件:

.....
"scripts": {
  "script1": "node script1.js",
  "script2": "npm run script1 && node script2.js"
},
.....

> npm run script2 --port '8081'

现在,标志 --port 仅在 script2 中使用。 如何在 script1 中传递此标志?

【问题讨论】:

  • 一个跨平台的解决方案就是跑; npm run script2 -- --port 8081 - 注意npm run script2 命令和你的参数--port 8081之间的额外--

标签: node.js package.json npm-scripts npm-run


【解决方案1】:

我发现在这种情况下使用环境变量更容易:

PORT=8081 npm run script2

然后让您的脚本像这样使用该变量:

"scripts": {
  "script1": "node script2.js --port=${PORT:-8080}",
  "script2": "npm run script1 && node script2.js --port=${PORT:-8080}"
}

【讨论】:

  • 这在 *nix 平台上运行时没问题,因为 npm 用于 npm 脚本的默认 shell 是 sh。然而,Windows 上的命令替换(即${...})会失败,因为通常 npm 用于 npm 脚本的默认 shell 是 cmd
  • 这是真的。我刚刚接受了这一点,并始终在 Windows 上使用 Ubuntu。我已经放弃了 cmd,希望有一天 windows 也会如此。
猜你喜欢
  • 2021-10-01
  • 2020-01-22
  • 2015-10-30
  • 2023-03-05
  • 2017-12-13
  • 2020-12-31
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
相关资源
最近更新 更多