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

<p>я пытаюсь понять эту часть: <a href="http://getcomposer.org/doc/02-libraries.md#lock-file">http://getcomposer.org/doc/02-libraries.md#lock-file</a> </p><blockquote> <p>этот файл блокировки не будет влиять на другие проекты, которые зависят от него. это влияет только на основной проект "</p> </blockquote><p>означает ли это, что если проект p зависит от библиотеки a, а библиотека a зависит от библиотеки b v1.3, проект p не будет заботиться о версии библиотеки b, и, возможно, вместо этого установит b 1.4? какой смысл тогда?</p><p>или это означает обратное, как и следовало ожидать от менеджера зависимостей?</p>

<p>зависимости composer определены в <code>composer.json</code>. при запуске composer установите в первый раз или при запуске composer обновите файл блокировки с именем <code>composer.lock</code>.</p><p>приведенная документация относится только к файлу блокировки. если ваш проект p зависит от библиотеки a, а a зависит от b v1.3. ***, то если a содержит файл блокировки, в котором говорится, что кто-то запустил "обновление композитора", в результате чего устанавливается b v1.3.2, то установка a в вашем проекте p все еще может установить 1.3.3, так как <code>composer.json</code> (не <code>.lock</code>!) определил зависимость для 1.3. *.</p><p>файлы блокировки всегда содержат точные номера версий и полезны для передачи протестированной версии коллегам или при публикации приложения. для библиотек важна информация о зависимостях в <code>composer.json</code>.</p>

<p><code>composer.lock</code> записывает точные версии, которые установлены. так что вы в одной версии с вашими коллегами.</p><p><strong> установка композитора </strong></p><ul> <li>проверьте файл <code>composer.lock</code></li> <li>если нет, автоматически сгенерируйте файл <code>composer.lock</code> (используя <code>composer update</code>)</li> <li>установите указанные версии, записанные в файле <code>composer.lock</code></li> </ul><p><strong> обновление композитора </strong></p><ul> <li>просмотрите файл <code>composer.json</code></li> <li>проверьте наличие более новых (последних) версий на основе упомянутых критериев версии (например, 1.12. *).</li> <li>установите последние возможные (согласно вышеуказанным) версии</li> <li>обновите файл <code>composer.lock</code> с установленными версиями</li> </ul><hr><p><em> так что в простом контрольном списке. </em></p><p><strong> если вы хотите, чтобы все сотрудники работали с теми же версиями, что и вы ... </strong></p><ul> <li>зафиксируйте свой <code>composer.lock</code> в git (или у вас есть vcs)</li> <li>попросите других получить эту версию файла <code>composer.lock</code></li> <li><strong> всегда используйте </strong> <code>composer install</code>, чтобы получить правильные зависимости</li> </ul><p><strong> если вы хотите обновить системные зависимости до новых версий </strong></p><ul> <li>проверьте файл composer.json на наличие спецификаций версии.</li> <li>сделать <code>composer update</code></li> <li>это изменит файл <code>composer.lock</code> с новыми версиями</li> <li>передайте это в git (или vcs)</li> <li>попросите других получить его и <code>composer install</code></li> </ul><p>следующее будет очень хорошим чтением<br> <a href="https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file">https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file</a> </p><p>наслаждайтесь мощью файла <code>composer.lock</code>!</p>

<p>смысл файла блокировки - записать точные версии, которые установлены, чтобы их можно было переустановить. это означает, что если у вас спецификация версии 1. * и ваш коллега запускает <code>composer update</code>, который устанавливает 1.2.4, а затем фиксирует файл composer.lock, когда вы <code>composer install</code>, вы также получите 1.2.4, даже если 1.3 .0 был выпущен. это гарантирует, что все работающие над проектом имеют одинаковую точную версию. подробнее здесь <a href="https://blog.engineyard.com/2014/composer-its-all-about-the-lock-file">композитор: все дело в файле блокировки</a> </p>