版本号中的~/^

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,107评论 19 139
  • 总结 npm 采用语义版本管理软件包。所谓语义版本,就是指版本号为a.b.c的形式,其中a是大版本号,b是小版本号...
    ShivaMing阅读 4,346评论 0 0
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,677评论 4 61
  • 琼楼玉宇当空建, 花海云雾绕山间。 红蓝粉紫千百异, 花开杜鹃遍满山。
    唯恋右肩阅读 1,715评论 0 4
  • 36-笑笑之 DAY11 关键词演绎:女人 很从女人很怕老去,所以常常希望在20多岁30岁后忘记自己的年龄。因为年...
    笑笑之阅读 1,261评论 0 0

友情链接更多精彩内容