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:你想使用现有的最新版本