Распространённая ошибка при описании версий в 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