Что означает тильда (~) в моем файле 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]