Что означает тильда (~) в моем файле composer.json?
У меня есть эта строка в моем файле composer.json:
"require": {
...
"friendsofsymfony/user-bundle": "[email protected]",
...
},
Что означает тильда ~
в [email protected]
точно? Является ли это заполнитель и всегда должен получать такие подделки, как 1.2.0
, 2.2.0
, 3.2.0
и т.д.? Не имеет смысла (и будет выполняться подстановочным знаком *
).
документация composer.json ничего не говорит о тильде.
Я прошу, потому что я только что прочитал о проблеме безопасности в блоге Symfony, и они рекомендуют перейти на версию 1.3.3. Но выяснить версию FOSUserBundle не так просто (я не смог найти файл, содержащий версию).
Ответы
Ответ 1
Тильда означает следующий значительный выпуск. В вашем случае это эквивалентно >= 2.0, < 3.0
.
Полное объяснение приведено на странице документации Tilde Version Range:
Оператор ~
лучше всего объяснить на примере: ~1.2
эквивалентен >=1.2 <2.0.0
, а ~1.2.3
эквивалентен >=1.2.3 <1.3.0
.
Другой способ взглянуть на это состоит в том, что использование ~
определяет минимум версия, но позволяет перейти к последней указанной цифре.
Комментарий Seldeak ниже - это простое обобщение документации Composer.
Ответ 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
Ответ 3
Тильда ~
в [email protected]
точно означает переход к немедленной версии:
Например:
Если у нас есть [email protected]
, он сразу переходит к следующей версии => [email protected]