版本号中的~/^
2017-01-14 本文已影响26人
微微笑的蜗牛
podfile中,会经常遇到版本号的配置。"~"算是比较常见的,之前一直没搞清楚它的含义。
版本号
1.2.0
major.minor.patch
版本号分为major,minor,patch。分别对应第一,二,三位。
~
~的意思是:
如果有minor,则patch可以变,minor不能变。
如果没有minor,则minor,patch可变,major不能变。
minor是大腕。
伪代码表示如下:
if (has minor) {
// 左开右闭,patch可变
return [major.minor.patch, major.(minor+1).0)
} else {
return [major.minor.patch, (major+1).minor.0)
}
比如:
~1.2.0 ===> 1.2.0 <= x < 1.3.0
~1.3 ===> 1.3.0 <= x < 1.4.0
~2 ===> 2.0.0 <= x < 3.0.0
^
表示左边第一位非0的版本号不变,其他可变。
例子:
major非0 ^1.2.2 ===> 1.2.2 <= x < 2.0.0
minor非0 ^0.1.2 ===> 0.1.2 <= x < 0.2.0
patch非0 ^0.0.1 ===> 0.0.1 <= x < 0.0.2
但是,如果没有patch,patch会默认是0,并且可变,即使major,min都是0。
^0.0 := >=0.0.0 <0.1.0
如果minor,patch都没有,也会默认为0,并且可变,即使major也为0.
^1.x ===> 1.0.0 <= x < 2.0.0
^0.x ===> 0.0.0 <= x < 1.0.0
详细可查看https://cnpmjs.org/package/semver 的Tilde Ranges和Caret Ranges