版本号中的~/^

作者: 微微笑的蜗牛 | 来源:发表于2017-01-14 17:59 被阅读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

    相关文章

      网友评论

        本文标题:版本号中的~/^

        本文链接:https://www.haomeiwen.com/subject/mogebttx.html