2013-09-24 37 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