it-swarm.com.ru

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

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

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

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

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

55
HappyDeveloper

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

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

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

63
naderman

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!

37
Dilhan Maduranga

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

3
Shahzaib Hayat Khan