Рассмотрим какие существуют варианты указания версии пакета в 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 единственное можно изменить последний ноль на * для обновления исправлений.
Источники вдохновения: