语义化版本https://semver.org/lang/zh-CN/

    了解版本号分类

    版本格式:主版本号.次版本号.修订号,版本号递增规则如下:

    主版本号:当你做了不兼容的 API 修改,
    次版本号:当你做了向下兼容的功能性新增,
    修订号:当你做了向下兼容的问题修正。
    先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

    版本格式:主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的问题修正。 先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。

    ~表示版本号只能改变最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z)
    ~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0
    ~1.2 代表 1.2 <= 版本号 <2.0

    ^表示除了大版本号以外,小版本号和补丁版本号都可以变
    ^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0

    特殊情况0开头的版本号:
    ^0.3.0 等于 0.3.0 <= 版本号 <0.4.0 注意:不是 <1.0.0
    因为:semantic versioning 的规定是,大版本号以 0 开头表示这是一个非稳定版本(unstable),
    如果处于非稳定状态,小版本号是允许不向下兼容的,

    所以如果你要指定 0 开头的库那一定要注意:
    危险写法:~0.1 等于 0.1.0 <= 版本号 <1.0.0
    保险写法:^0.1 等于 0.1.0 <= 版本号 <0.2.0

    ~表示版本号只能改变最末尾那段(如果是 ~x.y 末尾就是 y,如果是 ~x.y.z 末尾就是 z)~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0
    ~1.2 代表 1.2 <= 版本号 <2.0

    ^表示除了大版本号以外,小版本号和补丁版本号都可以变
    ^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0

    特殊情况0开头的版本号:
    ^0.3.0 等于 0.3.0 <= 版本号 <0.4.0 注意:不是 <1.0.0
    因为:semantic versioning 的规定是,大版本号以 0 开头表示这是一个非稳定版本(unstable),
    如果处于非稳定状态,小版本号是允许不向下兼容的,

    所以如果你要指定 0 开头的库那一定要注意:
    危险写法:~0.1 等于 0.1.0 <= 版本号 <1.0.0
    保险写法:^0.1 等于 0.1.0 <= 版本号 <0.2.0

    所以用这个说法来理解composer.json里面版本的控制
    总结:

    1. ^ : 锁住头部 (遇到 0,当作不存在,往后锁)<br /> ~ : 改变尾部

    [其他的说法]
    https://blog.csdn.net/SakuraLLj/article/details/77931672
    在这里插入图片描述在这里插入图片描述
    https://learnku.com/docs/composer/2018/versions/2098#3ae463
    ————————————————
    版权声明:本文为CSDN博主「白菜喵」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/eebaicai/article/details/88047833