将相同的参数传递给 package.json 中多个脚本的节点

Posted

技术标签:

【中文标题】将相同的参数传递给 package.json 中多个脚本的节点【英文标题】:Pass the same parameters to node for multiple scripts in 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。 【参考方案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,并且没有反引号 从您的答案中消失。

以上是关于将相同的参数传递给 package.json 中多个脚本的节点的主要内容,如果未能解决你的问题,请参考以下文章

将命令行参数传递给 package.json 中的 npm 脚本

如何将带有前导斜杠的参数传递给 npm 脚本

通过 npm 命令将参数传递给 Angular 6 应用程序 [重复]

为啥是 。作为参数传递给没有 -- 分隔符的 npm?

如何将两个估计器对象传递给 sklearn 的 GridSearchCV,以便它们在每个步骤中具有相同的参数?

将参数传递给函数