composer.lock: как это работает?

Я пытаюсь понять эту часть: http://getcomposer.org/doc/02-libraries.md#lock-file

этот файл блокировки не будет влиять на другие проекты, которые зависят от него. Это влияет только на основной проект "

Означает ли это, что если проект P зависит от библиотеки A, а библиотека A зависит от библиотеки B v1.3, проект P не заботится о версии библиотеки B и, возможно, будет устанавливать B 1.4 вместо этого? Тогда какой смысл?

Или это означает обратное, как можно было бы ожидать от менеджера зависимостей?

Зависимости композитора определяются в composer.json . При запуске компоновщика в первый раз или при запуске обновления composer.lock будет создан файл блокировки с именем composer.lock .

К цитируемой документации относится только файл блокировки. Если ваш проект P зависит от библиотеки A и A, зависит от B v1.3. ***, то если A содержит файл блокировки, в котором говорится, что кто-то запустил «обновление композитора», в результате чего был установлен B v1.3.2, затем установка A в вашем проекте P может все еще установить 1.3.3, так как composer.json (not .lock !) Определил зависимость, которая должна быть на 1.3. *.

Файлы блокировки всегда содержат точные номера версий и полезны для связи с проверенной вами версией с коллегами или при публикации приложения. Для библиотек важна информация о зависимостях в composer.json .

composer.lock записывает точные версии, которые установлены. Чтобы вы были в тех же версиях с вашими коллегами.

установка композитора

  • Проверьте файл composer.lock
  • Если нет, автоматически создавайте файл composer.lock (используя composer update )
  • Установите указанные версии, записанные в файле composer.lock

обновление композитора

  • Пройдите через файл composer.json
  • Проверьте наличие новых (последних) версий на основе указанных критериев версии (например, 1.12. *)
  • Установите последнюю версию (в соответствии с выше)
  • Обновите файл composer.lock с установленными версиями

Итак, в простой контрольный список.

Если вы хотите сохранить всех сотрудников в тех же версиях, что и вы …

  • Соедините свой composer.lock с GIT (или vcs, который у вас есть)
  • Попросите других получить эту версию файла composer.lock
  • Всегда используйте composer install для получения правильных зависимостей

Если вы хотите обновить системные зависимости до новых версий

  • Проверьте файл composer.json для спецификаций версии.
  • Сделайте composer update
  • Это изменит файл composer.lock с новейшими версиями
  • Зафиксируйте его с помощью GIT (или vcs)
  • Попросите других установить его и composer install

Следующее будет очень хорошим чтением
https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file

Наслаждайтесь мощью файла composer.lock !

Точка файла блокировки – это запись точных версий, которые установлены, чтобы их можно было повторно установить. Это означает, что если у вас есть спецификация версии 1. *, и ваш сотрудник запускает composer update которое устанавливает 1.2.4, а затем записывает файл composer.lock, когда вы composer install , вы также получите 1.2.4, даже если версия 1.3.0 была выпущена. Это гарантирует, что все, кто работает над проектом, имеют ту же самую точную версию. Читайте больше здесь Композитор: это все о файле блокировки