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

97

У меня есть эта строка в моем файле 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 не так просто (я не смог найти файл, содержащий версию).

Теги:
syntax
composer-php

2 ответа

124
Лучший ответ

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

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

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

Другой способ взглянуть на это состоит в том, что использование ~ указывает минимум версии, но позволяет последним указанным цифрам идти вверх.

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

  • 68
    Я бы хотел сказать, что простое эмпирическое правило заключается в том, что ~ позволяет последней цифре увеличиваться. например, ~2.2 означает 2.2 и любой 2.x, где x равен 2 или выше. ~2.1.3 также является любым 2.1.x, где x равен 3 или выше.
  • 1
    Чем ~2.0 отличается от 2.* ? Это полезно только если последняя цифра не 0?
Показать ещё 1 комментарий
1
Оператор

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню