windows - 突然,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 脚本有变化吗?它是错误还是功能?
解决方案
更新:未能在 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 环境。
推荐阅读
- sql-server - 如何授予用户访问 SQL 作业的权限?
- c# - 模块的依赖
- cmake - 试图将静态链接到共享库 - 得到未定义的引用
- python - 表分区以应用适当的模型
- go - go to write (by index) to a out of index element in slice 的惯用方式是什么?
- java - Web 服务用户身份验证 - 在客户端存储密码
- c# - 如何使用 ASP.NET MVC 和实体框架在 C# 中创建注销
- javascript - 为什么使用 document.write 不会在浏览器上显示文本
- java - java.lang.NoSuchMethodException: [Ljava.lang.reflect.Method;.myMethod(java.lang.String, boolean)
- ruby-on-rails - 在没有连接请求的情况下重定向到管理界面