语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。
- 如果只是修复bug,需要更新Z位。
- 如果是新增了功能,但是向下兼容,需要更新Y位。
- 如果有大变动,向下不兼容,需要更新X位。
版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。
例如"argv": "0.0.x"表示依赖于0.0.x系列的最新版argv。
规则符号含义
1. ^
表示同一主版本号中,不小于指定版本号的版本号。
如:
^2.2.1 对应主版本号为 2,不小于 2.2.1 的版本号,比如 2.2.1、2.2.2、2.3.0
2. ~
表示同一主版本号和次版本号中,不小于指定版本号的版本号。
如:
~2.2.1 对应主版本号为 2,次版本号为 2,不小于 2.2.1 的版本号,比如 2.2.1、2.2.2
3.>、<、=、>=、<=、-、###
用来指定一个版本号范围。
如:
>2.1
1.0.0 - 1.2.0
注:使用 `-` 的时候,必须两边都有空格。
4. ||
表示或
如:
^2 <2.2 || > 2.3
5. x、X、*
表示通配符
如:
1.X
1.2.x
1.2.*
*
参考文章:
https://github.com/npm/node-semver
https://blog.xcatliu.com/2015/04/14/semantic_versioning_and_npm/