用于版本号的 npm package.json 配置变量

Posted

技术标签:

【中文标题】用于版本号的 npm package.json 配置变量【英文标题】:npm package.json config variables used for version numbers 【发布时间】:2017-05-08 15:11:10 【问题描述】:

我的 package.json 中有 3 个与 React 相关的包,并且版本号必须同步。我知道使用 Maven,您可以在 POM 文件中定义变量以重用并在不同包之间保持版本号同步。

我想对我的 npm package.json 做同样的事情,就像这样:

...
"config": 
  "react_version": "^15.4.1"
,
"dependencies": 
  "react": "$npm_package_config_react_version",
  "react-addons-test-utils": "$npm_package_config_react_version",
  "react-dom": "$npm_package_config_react_version"

...

似乎 package.json 文件中设置的config 变量只能在您的script 命令中使用。

目前有没有办法解决这个问题?未来版本的 npm 中会包含类似的内容吗?

【问题讨论】:

【参考方案1】:

我也一直在努力解决这个问题。对我来说,问题是我想在不同的环境中使用不同的 npm 标签('latest' 用于 dev,'prod' 用于 prod)。我想出的解决方案是为标签使用环境变量。我在 package.json 中设置了以下内容。由于我在除生产服务器之外的所有地方都使用“最新”,因此我避免了无意中更改 git 存储库的问题:

  "scripts": 
    "start": "perl -pi -e \"s#\\\"package_name\\\".*#\\\"package_name\\\": \\\"$TAG_VAR\\\",#\" package.json && node app.js"
  ,
  "dependencies": 
    "package_name": "latest",
    "other_package": "^1.0.0"
  

【讨论】:

以上是关于用于版本号的 npm package.json 配置变量的主要内容,如果未能解决你的问题,请参考以下文章

package.json 安装插件时版本号前缀解析

npm 5.0版本之后,npm install后都会有一个package-lock.json,作用是什么?

在 npm 包中,依赖版本的空字符串 ("") 是啥意思?

json 用于新npm包的package.json样板文件

在 Clojure 项目中存储项目版本号的常见约定是啥?

package.json和package-lock.json的区别