【发布时间】:2022-04-23 04:03:08
【问题描述】:
我在 NPM 脚本中使用像这样的 package.json 变量:
// 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 脚本有变化吗?是错误还是功能?
【问题讨论】:
-
对于跨平台,请考虑使用cross-var,然后您可以使用单一语法,即使用美元前缀
$...而不是%...%。例如;"get-version": "cross-var echo $npm_package_version" -
顺便说一句。如果你
cd到你的项目目录并运行npm run env,你可以验证npm_package_version是否存在于环境变量列表中。 -
感谢您的编辑。
npm run env工作并列出npm_package_version。不明白为什么%npm_package_version%不再起作用了。使用npm install cross-var --save-dev安装后,cross-var的技巧有效。 -
@JordanRamstad:
npm config get script-shell显示了什么? -
@entitycs 是的,虽然现在我确实看到了这个问题,但相关问题与我的问题并不完全相同(我尝试将其作为解决方案,但它也不起作用),提出赏金是可能有点仓促,应该提出我自己的问题。基本上我希望能够运行一个 npm 脚本并从 cli 传递一个变量,并让节点脚本可以访问它。我还没有找到一个有效的解决方案,并且已经求助于使用环境变量。但是,我在上一条评论中描述它的方式在以前的版本中有效,在 package.json 中定义了像
$variable这样的变量。
标签: windows variables npm package.json