composer - Как указывать версии зависимостей (тильда, звездочка, шапка: ^ * ~) -- что означают в версиях. Значение

При указании допустимых версий пакетов можно использовать

  • точное соответствие (1.2.3),
  • диапазоны с операторами сравнения (< 1.2.3),
  • комбинации этих операторов (>1.2.3 < 1.3), “последняя доступная”(1.2.*),
  • символ тильды (~1.2.3)
  • и знак вставки (^1.2.3).
  • "dev-master" - при каждом обновлении будет вытаскивать последнее состояние ветки master.

Тильда и колпачок -- какая разница

  • указание тильды (~1.2.3) будет включать в себя все версии до 1.3 (не включительно), так как в семантическом версионировании это является моментом внедрения новых функциональных возможностей. В данном случае будет получена последняя из стабильных минорных версий. Как гласит документация, при данном указании изменяться может только последняя цифра версии.
  • указание знака вставки (^1.2.3) буквально означает “опасаться только критических изменений” и будет включать в себя версии вплоть до 2.0. Применительно к semver, изменение мажорной версии является моментом внесения в проект критических изменений, так что версии 1.3, 1.4 и 1.9 подходят, в то время как 2.0 — уже нет.


Кроме случая, когда вы знаете, что вам нужна конкретная версия пакета, я рекомендую всегда использовать формат ~1.2.3 — это самый безопасный выбор.

Узнать текущие версии пакетов, используемых в вашем приложении можно так.

Источник

https://habrahabr.ru/post/258891/

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

Непонятно тогда в чем разница между
~1.2.3 и 1.2.*
это выходит одно и то же, если звездочка идёт вместо последней цифры?

_____________
матфак вгу и остальная классика =)

melisa's picture

точно не знаю, но возможно, стоит обратить внимание на слово стабильная в описании ~ варианта.
Может быть * закачает последнюю доступную версию, вне зависимости от её стабильности.

vedro-compota's picture

сообразил

  • ~1.2.3 -- все же жестко требует ставить выше >=1.2.3
  • 1.2.* -- а вот тут можно поставить и 1.2.1.

Эта разница может оказаться существенной если разные другие пакеты в одном проекте будут требовать разные версии.

_____________
матфак вгу и остальная классика =)