欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

composer.json文件中波浪号(〜)是什么意思 尖括号是什么意思 有大用 有大大用 有大大大用

我的composer.json文件中有这一行:



 “require”:{
...
“friendsofsymfony / user-bundle”:“~2.0@dev”,
...
},



~2.0@dev 中的符号〜是什么意思?是一个占位符,并且应该总是获取 1.2.0 , 2.2.0 , 3.2.0 等等?没有意义(并且通过 * 通配符)。


“Tilde”表示下一个重要发布。在你的情况下,它等价于> = 2.0,< 3.0 。



完整说明在 https://getcomposer.org/doc/articles/versions.md#tilde




另一种查看方式它是使用〜指定最小
版本,但允许指定的最后一个数字上升。

来自 http://www.it1352.com/540815.html


composer 版本号前置~与^符号的区别


 版权声明:让我们一起享受这神奇的0和1吧 https://blog.csdn.net/eebaicai/article/details/88047833

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

了解版本号分类

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

主版本号:当你做了不兼容的 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

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

[其他的说法]
https://blog.csdn.net/SakuraLLj/article/details/77931672
在这里插入图片描述在这里插入图片描述
https://learnku.com/docs/composer/2018/versions/2098#3ae463



来自  https://blog.csdn.net/eebaicai/article/details/88047833



1

这是官网的话

Caret#
The ^ operator behaves very similarly but it sticks closer to semantic versioning, and will always allow non-breaking updates. For example ^1.2.3 is equivalent to >=1.2.3 <2.0.0 as none of the releases until 2.0 should break backwards compatibility. For pre-1.0 versions it also acts with safety in mind and treats ^0.3 as >=0.3.0 <0.4.0.
This is the recommended operator for maximum interoperability when writing library code.

Example: ^1.2.3
Composer

image.png
Salamander  6.5k
2016-08-09 提问


2 个回答
14

已采纳

@查尔斯 ~^的意思很接近,在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/a...

2

感谢 @北月武士 指正

^符号意思,用于匹配下一个重要版本

举例:

composer.json

{
    "require": {
        "topthink/framework": "^5.0-rc1"
    }
}

执行sudo composer install 以后效果如下

image.png

匹配到了composer库详情页的最新一个重要版本

image.png

https://packagist.org/package...

另外备注下:犯这个错误是因为一个前提条件,我一般只关心次版本号,而不会关心修正号,所以如果你一直指定~x.y和^x.y的确是一样的,哪怕库的版本号就是用x.y.z的版本规范命名的




普通分类: