【问题标题】:How to control that all developers use the same library version?如何控制所有开发人员使用相同的库版本?
【发布时间】:2020-05-03 21:42:07
【问题描述】:

我们使用 GitHub 作为代码存储库,使用 Visual Studio Code 在 Angular 中进行开发。这很好用,但最近我们遇到了一个问题,因为其中一位开发人员拥有某个库的不同版本。由于使用npm 安装不需要指定版本(它会安装最新版本),因此他最终得到了与其他开发人员不同的版本。

解决问题的一种方法是将所有库放在 GitHub 中,但这似乎势不可挡。让所有开发人员使用相同版本的 javascript 库的最佳做法是什么?

【问题讨论】:

  • 我想我可能被误导了,但这不就是包锁的作用吗?文件是否在 repo 中提交?
  • 1) 在 package.json 中指定 Angular 的固定版本(例如 "8.0.0")或 2) 如果您想坚持使用 SemVer 规范来更新次要版本和补丁版本(例如 "^8.0.0"),提交您的package-lock.json 文件。
  • 这是个好问题。您可以使用 @. 在 package.json 中要求确切的版本
  • 是的,我同意@miqh,你需要 package-lock.json,这样,当一个成员使用 npm-install 时。该库应安装正确的版本。

标签: javascript angular git github npm


【解决方案1】:

确保package.json 指定了依赖项的版本并且您提交了此文件

{
  "dependencies": {
    "foo": "1.2.3"  exact version
    "bar": ">1.2.3" greater than 1.2.3
    "baz": "^1.2.3" compatible with 1.2.3, ie from 1.2.3 until below 2.0.0
  }
}

More details on semantic versionning

package.json 定义了可以安装的版本范围,但package-lock.json 定义了安装所有包的确切版本(所有=包括依赖项的依赖项)。你必须提交这个文件。

另外,更喜欢npm clean-install 而不是npm install,因为如果节点模块文件夹中安装的包与包锁中定义的包不匹配,则会引发错误。

【讨论】:

  • 我更喜欢使用package-lock.json,所以每个人都有相同的库版本,即使是很小的改动也会有所作为。
猜你喜欢
  • 2022-08-24
  • 2011-09-16
  • 2010-12-19
  • 2010-09-12
  • 2021-06-19
  • 1970-01-01
  • 2010-09-07
  • 2011-06-19
  • 1970-01-01
相关资源
最近更新 更多