将相同的参数传递给 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 命令将参数传递给 Angular 6 应用程序 [重复]