composer里的“^”符号代表什么含义?

已邀请:

zkbhj - 凯冰科技站长

赞同来自:

~和^的意思很接近,在x.y的情况下是一样的都是代表x.y <= 版本号 < (x+1).0,但是在版本号是x.y.z的情况下有区别,举个例子吧:
~1.2.3 代表 1.2.3 <= 版本号 < 1.3.0

^1.2.3 代表 1.2.3 <= 版本号 < 2.0.0
官方文档:https://getcomposer.org/doc/articles/versions.md

zkbhj - 凯冰科技站长

赞同来自:

版本格式:主版本号.次版本号.修订号,
版本号递增规则如下: 
主版本号:当你做了不兼容的 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 
^ : 锁住头部 (遇到 0,当作不存在,往后锁)
~ : 改变尾部

要回复问题请先登录注册