Рассмотрим какие существуют варианты указания версии пакета в Composer.
{ "require": { "php": ">=5.3.3", "symfony/symfony": "2.3.*", "twig/extensions": "1.0.0", "symfony/monolog-bundle": "dev-master", "doctrine/orm": ">=2.2.3,<2.4-dev", "sensio/generator-bundle": "~2.3.0", "incenteev/composer-parameter-handler": "~2.0", "monolog/monolog": "dev-master#2eb0c0978d290a1c45346a1955188929cb4e5db7" } "extra": { "branch-alias": { "dev-master": "2.3-dev" } } }
- Точное указание версии, например строка пять,
"twig/extensions": "1.0.0"
. Если даже будут выходить фиксы к версии то пакет обновляться не будет. На строке 9"monolog/monolog": "dev-master#2eb0c0978d290a1c45346a1955188929cb4e5db7"
указана ветка и точная ссылка на commit. Это полезно на стадии разработки когда пакет от которого вы зависите ветке dev-master не стабилен. - Указание диапазона, например третья строка "php": ">=5.3.3" указывает что версия php должна быть более 5.3.3, а строка 7
"doctrine/orm": ">=2.2.3,<2.4-dev"
, указывает на версию doctrine больше либо равной 2.2.3 но меньше 2.4-dev. Возможно использовать операторы>, >=, <, <=, !=
. - Wildcard, например строка 4
"symfony/symfony": "2.3.*",
указывает что может быть установлен пакет от версии 2.3.0 до 2.3.999999, то есть будут устанавливаться все баг фиксы данной версии. - Следующая значительная версия (тильда оператор) например строка восемь
"sensio/generator-bundle": "~2.3.0",
указывает что может обновится до версии меньшей 2.4 но больше чем указана, а строка девять"incenteev/composer-parameter-handler": "~2.0",
указывает что может обновлена до версии меньше 3.0
Указание версии dev-master указывает на последний релиз ветки master например "symfony/monolog-bundle": "dev-master",
, он не всегда рабочий. В extra можно указать branch-alias, то есть версия указанная на пакете будет ссылаться на алиас, к примеру в данной конфигурации пакет "symfony/monolog-bundle": "dev-master",
будет установлен версией 2.3-dev.
Если вы выпускаете пакет, версия пакета у него должна быть указана не require :"dev-master", всегда можно найти другой вариант.
Узнать доступные версии пакетов можно на Packagist
В данном случае указано как добавить пакет в composer.json единственное можно изменить последний ноль на * для обновления исправлений.
Источники вдохновения: