我的composer.json文件中的波浪号(〜)是什么意思?


115

我的composer.json文件中包含以下行:

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

波浪号~~2.0@dev确切含义是什么?那是一个占位符,并且将永远取像颠覆1.2.02.2.03.2.0等?没有任何意义(将由*通配符完成)。

composer.json文档不告诉波浪任何事情。

我之所以问是因为,我刚刚在Symfony博客中读到了一个安全问题,所以他们建议升级到版本1.3.3。但是弄清楚FOSUserBundle的版本不是那么容易(我找不到包含该版本的文件)。

Answers:


142

Tilde表示下一次重大发布。在您的情况下,它等效于>= 2.0, < 3.0

完整说明在Tilde版本范围文档页面

~操作者通过实例最好的解释:~1.2相当于>=1.2 <2.0.0,而~1.2.3相当于>=1.2.3 <1.3.0

另一种查看方式是使用~指定最低版本,但允许指定的最后一位数字上升。

Seldeak的以下评论是对Composer文档的简单总结。


73
我喜欢用一种简单的经验法则来表示〜允许最后一位数字上升。例如,~2.2表示2.2和x为2或更大的任何2.x。~2.1.3上的任何2.1.x,其中x为3或更高。
Seldaek

2
有什么~2.0不同2.*?仅当最后一位不是0时才有用吗?
杰西(Jesse)2015年

24
〜2.0和2. *是相同的,但〜2.3和2. *是不同的,因为
〜2.3

2

Tilde运算符对于使用semantic versioningscheme 版本化其库的项目很有用。

Semantic versioning更像是对进行评估的指南next significant release

对于Composer,此操作符意味着在安装更新时允许次要发行版(可以包括补丁程序),而不允许主要版本(可能不向后兼容)。

例如:~4.1将允许项目版本,>=4.1但是<5.0

鸣谢:http : //dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.