Версионирование в Composer: типичная ошибка и как её избежать при работе с пакетами
Как не сломать зависимости в PHP: корректные ограничения версий в composer.json

Composer выдаёт ошибку на >=2.*? Вот как исправить версионные ограничения



Распространённая ошибка при описании версий в Composer

Одна из частых ошибок, которую допускают разработчики, — это указание ограничений версий в разделе require своего пакета в виде конструкций вроде >=2.* или >=1.1.*.

Почему такая запись не имеет смысла

Если задуматься о том, что на самом деле означает выражение >=2.*, быстро становится ясно, что оно логически противоречиво. Разложим его на две части:

  • >=2 означает, что пакет должен иметь версию 2.0.0 или выше.
  • 2.* означает, что пакет должен находиться в диапазоне от версии 2.0.0 (включительно) до 3.0.0 (исключительно).

Оба условия согласны в том, что версия должна быть не ниже 2.0.0. Однако невозможно однозначно определить, предполагали ли вы использование версии 3.0.0 или выше. Должна ли она удовлетворять условию, потому что вы указали >=2, или не должна, поскольку вы также ограничили версию шаблоном 2.*?

Как исправить и что делать вместо этого

Именно по этой причине Composer выдаёт ошибку и сообщает, что подобная запись недопустима. Чтобы решить проблему, необходимо чётко сформулировать своё намерение и использовать только один из подходов — либо операторы сравнения (>=, < и т.д.), либо шаблоны версий (*, ~, ^).

Перевод официальной документации Composer:
getcomposer.org

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню