前提:一个完整的版本号组表示为[主要版本号,次要版本号,补丁版本号]
高级范围语法指按照确定的方法分离比较器为原始比较器。通过原始比较器可以明显的看出版本范围。
连字符(-) X.Y.Z - A.B.C
常规使用:
1.2.3 - 2.3.4 | 1.2.3<=实际版本<=2.3.4 |
如果开始版本只提供了部分版本号,则用0替换丢失的部分:
1.2 - 2.3.4 | 1.2.0<=实际版本<=2.3.4 |
如果结束版本只提供了部分版本号,则接受 所有 符合提供版本号部分的版本,不接受超过提供版本号部分的版本:
1.2.3 - 2.3 | 1.2.3<=实际版本<2.4.0 |
1.2.3 - 2 | 1.2.3<=实际版本<3.0.0 |
x范围符 1.2.X 1.X 1.2.* *
X、x或*都可以用来“替换”[主,次,补丁]数组中的一个,而部分版本范围被视为X范围,因此特殊字符是可选的:
* | 任意版本 | |
1.x | 1.0.0<=实际版本<2.0.0 匹配[主]版本 | 1 |
1.2.x | 1.2.0<=实际版本<1.3.0 匹配[主,次]版本 | 1.2 |
腭化符号/波浪号(~) ~1.2.3 ~1.2 ~2
如果在比较器上制定了次要版本,则允许补丁级修改。Allows minor-level changes if not:
~1.2.3 | 1.2.3<=实际版本<1.3.0 |
~1.2 | 1.2.0<=实际版本<1.3.0 |
~1 | 1.0.0<=实际版本<2.0.0 |
~0.2.3 | 0.2.3<=实际版本<0.3.0 |
~0.2 | 0.2.0<=实际版本<0.3.0 |
~0 | 0.0.0<=实际版本<1.0.0 |
~1.2.3-beta.2 | 1.2.3<=实际版本<1.3.0 注意:如果大于等于beta.2则在1.2.3版本中允许进行预处理。因此1.2.3-beta.4是允许的,但是1.2.4-beta.2不允许。因为是不同[主,次,补丁]数组的映射。 |
补字符号(^) ^1.2.3 ^0.2.5 ^0.0.4
允许最左边不为0的不进行版本提升(不知道怎么翻译好^_^,附原句)Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple.换句话说,^1.0.0允许进行补丁和次要更新,对^0.X进行补丁更新,对版本0.0.x不进行更新。
当需要在0.2.4和0.3.0版本之间进行重大更改时,使用补字符号是理想的,它假定在0.2.4和0.2.5之间不会有重大修改(如不兼容的修改)。按照惯例,它允许假定为加性(但不破坏)的变化。
^1.2.3 | 1.2.3<=实际版本<2.0.0 |
^0.2.3 | 0.2.3<=实际版本<0.3.0 |
^0.0.3 | 0.0.3<=实际版本<0.0.4 |
^1.2.3-beta.2 | 1.2.3-beta.2<=实际版本<2.0.0 注意:如果大于等于beta.2则在1.2.3版本中允许进行预处理。因此1.2.3-beta.4是允许的,但是1.2.4-beta.2不允许。因为是不同[主,辅,布丁]数组的映射。 |
^0.0.3-beta | 0.0.3-beta<=实际版本<0.0.4 注意:如果大于等于beta,仅在0.0.3版本中允许进行预处理。因此。0.0.3-pr.2允许 |
解析补字符号范围时,缺少的补丁版本值翻译为数字0,但是允许该值的灵活性,即使主要版本和次要版本都是0;
^1.2.x | 1.2.0<=实际版本<2.0.0 |
^0.0.x | 0.0.0<=实际版本<0.1.0 |
^0.0 | 0.0.0<=实际版本<0.1.0 |
缺少的次要版本值和补丁版本值翻译为0,但也允许这些值内的灵活性,即使主要版本为0:
^1.x | 1.0.0<=实际版本<2.0.0 |
^0.x | 0.0.0<=实际版本<1.0.0 |