Почему несвязанные ограничения версий - плохая идея?

Ограничение версии без верхней границы, такое как *, >=3.4 или dev-master, позволит обновлять любую будущую версию зависимости. Это включает в себя основные версии, нарушающие обратную совместимость.

Как только релиз вашего пакета помечается, вы больше не можете настраивать его зависимости в случае, если зависимость ломается до н.э. - вам нужно сделать новый выпуск, но предыдущий останется сломанным.

Единственной хорошей альтернативой является определение верхней границы ваших ограничений, которую вы можете увеличить в новой версии после проверки того, что ваш пакет совместим с новой основной версией вашей зависимости.

Например, вместо использования >=3.4 вы должны использовать ~3.4, который позволяет все версии до 3.999, но не включает 4.0 и выше. Оператор ^ очень хорошо работает с библиотеками после семантического управления версиями.

Примечание. Как поддерживающий пакет, вы можете облегчить жизнь своим пользователям, предоставив альтернативную версию для вашей ветви разработки, чтобы она соответствовала ограниченным ограничениям.