【问题标题】:Pass the same parameters to node for multiple scripts in package.json将相同的参数传递给 package.json 中多个脚本的节点
【发布时间】:2021-04-12 23:33:35
【问题描述】:

在我的package.json 中,我有几个脚本一遍又一遍地使用相同的参数调用node。为了简化调用,我创建了一个 package.json 变量,并像这样调用脚本:

{
  "nodeParams": "--experimental-specifier-resolution=node --harmony -r source-map-support/register",
  "scripts": {
    "dothis": "node $npm_package_nodeParams myscript.js",
    "dothat": "node $npm_package_nodeParams another-script.js",
    ...
  }
}

这对于调用已编译的 TypeScript 代码很常见,并且在 NPM v6 中运行良好。

但是,由于a breaking change,它不再适用于 NPM v7:

RFC 21 环境不再包含 npm_package_* 字段

the currently recommended solution 是什么,或者其他什么?

【问题讨论】:

  • 为什么没有脚本,例如"node": "node --experimental-...",然后是"dothis": "npm run node -- myscript.js"?
  • 或者将nodeParams移到"config"键下,显然是coming back

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


【解决方案1】:

当然,你只需要使用npm_package_config_*

来自您提供的链接 (https://github.com/npm/rfcs/blob/latest/implemented/0021-reduce-lifecycle-script-environment.md)

将包含配置对象中的每个键,但如果存在 <pkgname>:<keyname> 配置值,npm 不会覆盖值。

例如

{
  "config" : { "nodeParams": "--experimental-specifier-resolution=node --harmony -r source-map-support/register" },
  "scripts": {
    "dothis": "node $npm_package_config_nodeParams myscript.js",
    "dothat": "node $npm_package_config_nodeParams another-script.js",
    ...
  }
}

【讨论】:

  • 请不要还原合法的编辑 - 那是 not(相当)OP 提供的 URL,它是我在之前评论中链接的 URL,并且没有反引号 从您的答案中消失。
猜你喜欢
  • 2018-07-29
  • 2021-10-03
  • 1970-01-01
  • 2018-10-08
  • 2016-05-15
  • 2020-05-09
  • 2017-12-13
相关资源
最近更新 更多