2013-09-24 31 views
97

我有这行我composer.json文件:在我的composer.json文件中代字号(〜)是什么意思?

"require": { 
    ... 
    "friendsofsymfony/user-bundle": "[email protected]", 
    ... 
}, 

是什么在[email protected]波浪~究竟意味着什么呢?这是一个占位符,并应始终获取像1.2.02.2.03.2.0等颠覆?没有意义(并且将由*通配符完成)。

composer.json documentation不会告诉任何关于代字号的信息。

我在问,因为我刚刚阅读了关于security issue in the Symfony blog,他们建议升级到版本1.3.3。但是搞清楚FOSUserBundle的版本并不容易(我找不到包含版本的文件)。

回答

123

Tilde表示下一个重要版本。就你而言,它相当于>= 2.0, < 3.0

完整的解释是在Tilde Version Range docs page

~操作者最好用例子说明:~1.2相当于>=1.2 <2.0.0,而~1.2.3相当于>=1.2.3 <1.3.0

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

Seldeak的下面的评论是一个简单的总结了作曲家文档的解释。

+65

一个简单的原则进行的拇指方式,我喜欢把它的〜让最后一个数字上去。例如“〜2.2”表示2.2和任何2.x,其中x为2或以上。 '〜2.1.3'也是2.1.x,其中x为3或以上。 – Seldaek

+1

'〜2.0'与'2. *'有什么不同?仅当最后一位数字不是0时才有用吗? – Jesse

+18

〜2.0和2. *是相同的但是〜2.3和2. *是不同的,因为〜2.3不允许低于2.3的版本,而2. *允许2.0,2.1,2.2等 – AlterPHP

2

Tilde运营商的项目,使用semantic versioning方案版本,他们的图书馆是有用的。

Semantic versioning是更多的指南,评估为next significant release

对于作曲,这意味着运营商允许次要版本(可以包括补丁),而不允许一个主要版本(可能不向后兼容),而安装更新。例如:将允许项目版本>=4.1<5.0

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