环境变量扩展不再适用于 Windows 上的 npm 运行
Environment variable expansion not longer works in npm run on Windows
我有使用环境变量的 npm 脚本。以下是 package.json
的摘录:
"scripts": {
"staging": "npm run deploy -env=staging",
"deploy": "winrs /r:intranet /d:F:\wwwintranet\deploy npm run build -env=%npm_config_env%",
到现在为止,-env=%npm_config_env%
已扩展为 -env=staging
或其他。突然它停止工作。这可能是由于 npm 从 6.x 更新到 7.x。
当我使用 "deploy": "set & winrs /r:intranet /d:F:\wwwintranet\deploy npm run build -env=%npm_config_env%"
进行测试时,我可以确认变量仍然设置。
作为临时解决方案,将 npm 降级到版本 6.x (npm install -g npm@6
) 有所帮助。不过,我需要一个将来也能使用的解决方案。
如何为 npm 7.x 再次启用变量扩展?或者使用 npm 7.x 传递环境变量的替代方案是什么?
编辑
这是 npm 7 中的错误。5.x。它已在 npm 7.7.0 及更高版本中修复(参见 https://github.com/npm/cli/issues/2731)
无法在 Windows 上扩展环境变量似乎是 a recent high-priority known bug in the npm CLI。
在发布修复程序之前,有几个选项可用作解决方法。
- 您可以降级到版本 6.x,直到这个问题得到解决。
- 这不适用于您的特定情况(见下文),但对于大多数情况,您可以使用
npx
来使用 npm@6
:
npx -p npm@6 npm run deploy
- 您可以尝试降级到 7.x 的早期版本,看看该错误是否一直存在于 7.x 中。从 7.0.0 开始,然后从那里开始。
npx
建议在这里不起作用,因为 deploy
调用 npm
本身,并且会使用 PATH
中的 npm
,即 npm@7
。但是对于需要在狭窄情况下调用旧版本 npm
的一般情况,这将起作用。
我有使用环境变量的 npm 脚本。以下是 package.json
的摘录:
"scripts": {
"staging": "npm run deploy -env=staging",
"deploy": "winrs /r:intranet /d:F:\wwwintranet\deploy npm run build -env=%npm_config_env%",
到现在为止,-env=%npm_config_env%
已扩展为 -env=staging
或其他。突然它停止工作。这可能是由于 npm 从 6.x 更新到 7.x。
当我使用 "deploy": "set & winrs /r:intranet /d:F:\wwwintranet\deploy npm run build -env=%npm_config_env%"
进行测试时,我可以确认变量仍然设置。
作为临时解决方案,将 npm 降级到版本 6.x (npm install -g npm@6
) 有所帮助。不过,我需要一个将来也能使用的解决方案。
如何为 npm 7.x 再次启用变量扩展?或者使用 npm 7.x 传递环境变量的替代方案是什么?
编辑
这是 npm 7 中的错误。5.x。它已在 npm 7.7.0 及更高版本中修复(参见 https://github.com/npm/cli/issues/2731)
无法在 Windows 上扩展环境变量似乎是 a recent high-priority known bug in the npm CLI。
在发布修复程序之前,有几个选项可用作解决方法。
- 您可以降级到版本 6.x,直到这个问题得到解决。
- 这不适用于您的特定情况(见下文),但对于大多数情况,您可以使用
npx
来使用npm@6
:
npx -p npm@6 npm run deploy
- 您可以尝试降级到 7.x 的早期版本,看看该错误是否一直存在于 7.x 中。从 7.0.0 开始,然后从那里开始。
npx
建议在这里不起作用,因为 deploy
调用 npm
本身,并且会使用 PATH
中的 npm
,即 npm@7
。但是对于需要在狭窄情况下调用旧版本 npm
的一般情况,这将起作用。