gpt4 book ai didi

node.js - NPM 7 - 将标志传递给脚本

转载 作者:行者123 更新时间:2023-12-03 08:20:20 25 4
gpt4 key购买 nike

在版本 7 之前的 NPM 中,我们能够使用美元星号将任意标志传递给 package.json 脚本:

// package.json
"scripts": {
"build": "npx pkg-bin build $*"
}

例如,如果上面的脚本是这样执行的:

npm run build --OVERRIDE --versionNumber=1.2.3

可通过 process.env.npm_config_argv 访问 OVERRIDEversionNumber 标志。

但是,在 NPM 7 中,此功能似乎已被删除。这些标志仍然不存在于 process.argv 中(像往常一样),但现在 npm_config_argv 也消失了。

现在可以在 process.env 上找到这些值作为单独的配置值,如下所示:

npm_config_override: 'true',
npm_config_versionnumber: '1.2.3'
npm_config_loglevel: 'error'

这带来了一些问题:

  • 每个其他 NPM 配置值也有自己的 npm_config_ 键(如上面的 loglevel),因此无法判断哪些值作为标志传递
  • 无法区分使用一个连字符和两个连字符传递的标志
  • 字母大小写(小写/大写/驼峰式)与传递给脚本的值不匹配

是否有解决方法可以将标志传递给 NPM 7 中的 package.json 脚本?

最佳答案

自 npm 7.x 发布以来,多个 npm_* 前缀环境变量已被删除。引用rfc #0021了解更多详情。

注意,在 Downsides 中该 RFC 的部分指出:

Some modules today use npm_config_argv. These will have to be updated to use other means to get this information.

Where the argv is being parsed in order to determine the command being run, the npm_command environ provides a safer approach.

因此,npm_command 环境变量可能值得探索。但是,正如您的评论中所指出的,它目前的值仅为 exec,这表明它尚未完全实现。

关于node.js - NPM 7 - 将标志传递给脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68061173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com