首页 > 解决方案 > 突然,NPM 脚本变量不再起作用

问题描述

package.json在 NPM 脚本中使用这样的变量:

// package.json
{
  "version": "0.12.1",
  "scripts": {
    "get-version": "echo %npm_package_version%"
  }
}

npm run get-version当前回显%npm_package_version%而不是0.12.1. 过去,这些脚本运行时没有任何问题。突然只有变量名回来了。具有多个存储库。我运行 Windows 10 2004 和 NodeJS v15.4.0。

Node.js 15 中的 NPM 脚本有变化吗?它是错误还是功能?

标签: windowsvariablesnpmpackage.json

解决方案


更新:未能在 Windows 上扩展环境变量似乎是npm CLI 中最近的一个高优先级已知错误

因为这是npm@7特定的,所以在发布修复程序之前,您可以降级到npm@6.

原始答案:

此问题中特定情况的最简单解决方案是使用node.

    "get-version": "node -p process.env.npm_package_version"

这适用于 Node.js 支持的每个平台。

如果您需要更通用的解决方案并且不想重写一堆脚本来使用node,您可以尝试@RobC在评论cross-var中提到的方法。

至于问题的根源,也许你是在 Windows bash shell 下运行的,这种情况下你可以这样使用:

    "get-version": "echo $npm_package_version"

不过,这不适用于非 bash Windows 环境。


推荐阅读