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


115

В моем файле composer.json есть такая строка:

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

Что делает тильды ~в ~2.0@devточности означает? Это заполнитель и всегда будет получать за диверсии , как 1.2.0, 2.2.0, 3.2.0и так далее? Не имеет смысла (и будет сделано с помощью *подстановочного знака).

Документация composer.json ничего не говорит о тильде.

Я спрашиваю, потому что я только что прочитал о проблеме безопасности в блоге Symfony, и они рекомендуют перейти на версию 1.3.3. Но выяснить версию FOSUserBundle не так просто (я не смог найти файл, содержащий эту версию).

Ответы:


142

Тильда означает следующий значительный выпуск . В вашем случае это эквивалентно >= 2.0, < 3.0.

Полное объяснение находится на странице документации Tilde Version Range :

~Оператор лучше всего объяснить на примере: ~1.2эквивалентно >=1.2 <2.0.0, в то время как ~1.2.3это эквивалентно >=1.2.3 <1.3.0.

С другой стороны, using ~указывает минимальную версию, но позволяет последней указанной цифре повышаться.

Приведенный ниже комментарий Seldeak представляет собой простое краткое объяснение документации Composer.


73
Мне нравится использовать простое практическое правило: знак ~ позволяет последней цифре повышаться. например, ~2.2означает 2.2 и любой 2.x, где x равно 2 или выше. ~2.1.3на также любой 2.1.x, где x равно 3 или выше.
Seldaek

2
Чем ~2.0отличается от 2.*? Это полезно, только если последняя цифра не 0?
Джесси

24
~ 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.

Для Composer этот оператор означает разрешение второстепенных выпусков (которые могут включать исправления) без разрешения основной версии (которая может быть несовместимой с предыдущими версиями) при установке и обновлении .

Например: ~4.1разрешит версии проекта, >=4.1но <5.0.

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


0

Тильда ~в ~2.0@dev точности среднего значения для перехода на немедленную версию:

Например :

Если он у нас есть, сразу ~2.0@devперейдет к следующей версии => ~2.x@dev

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.