2013-09-24 3 views
97

У меня есть эта линия в моем файле composer.json:Что означает тильда (~) в моем файле composer.json?

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

Что тильды ~ в [email protected] точно означает? Является ли это заполнитель и всегда должен получать такие отклонения, как 1.2.0, 2.2.0, 3.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, приведенный ниже, является простым объяснением документации Composer.

+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. * одинаковы BUT ~ 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 позволит проектные версии >=4.1, но <5.0.

Кредиты: http://dwellupper.io/post/37/using-tilde-range-operator-to-resolve-dependency-version-in-composer-php

Смежные вопросы