使用npm的语义版本管理的方法

105 阅读1分钟

Semantic Versioning(语义版本管理)是一种用来为版本提供意义的惯例

如果说Node.js包中有什么了不起的东西,那就是所有的人都同意使用Semantic Versioning(语义版本控制)来进行版本编号。

语义版本控制的概念很简单:所有的版本都有3位数字:x.y.z

  • 第一个数字是主版本
  • 第二位数字是次要版本
  • 第三位数字是补丁版本

当你制作一个新的版本时,你并不是随心所欲地提高一个数字,而是有规则的。

  • 当你做了不兼容的API修改时,你要提高主版本的数量
  • 当你以向后兼容的方式增加功能时,你要提高小版本。
  • 当你进行向后兼容的错误修复时,你要提高补丁版本。

这个惯例在所有的编程语言中都被采用,而且非常重要的是,每个npm 包都要遵守它,因为整个系统都依赖于此。

为什么这一点如此重要?

因为npm 设置了一些规则,我们可以在package.json 文件中使用这些规则来选择它可以将我们的软件包更新到哪个版本,当我们运行npm update

这些规则使用了这些符号。

  • ^
  • ~
  • >
  • >=
  • <
  • <=
  • =
  • -
  • ||

让我们来看看这些规则的细节。

  • ^: 如果你写了^0.13.0 ,当运行npm update ,它可以更新到补丁和次要版本。0.13.1,0.14.0 ,以此类推。
  • ~: 如果你写~0.13.0 ,当运行npm update 时,它可以更新到补丁版本:0.13.1 可以,但0.14.0 就不行。
  • >:你接受比你指定的版本高的任何版本。
  • >=:你接受任何等于或高于你指定的版本
  • <=:你接受任何等于或低于你指定的版本
  • <:你接受比你指定的版本更低的任何版本
  • =:你接受确切的版本
  • -:你接受一系列的版本。例子。2.1.0 - 2.6.2
  • ||:你结合了一组。例子。< 2.1 || > 2.6

你可以结合其中的一些符号,例如使用1.0.0 || >=1.1.0 <1.2.0 ,要么使用1.0.0,要么使用1.1.0以上的一个版本,但低于1.2.0。

也有其他规则。

  • no symbol:你只接受你指定的那个特定版本(1.2.1 )。
  • latest:你想使用现有的最新版本