Выбор ответа Junior Composer и PSR спрашивают часто обновлено

composer.json и composer.lock

Вопрос

Зачем коммитить composer.lock в репозиторий приложения?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Он фиксирует точные версии, и install везде ставит одно и то же. composer.json описывает допустимые диапазоны версий, а composer.lock точные установленные версии с хешами. composer install ставит ровно то, что в lock, поэтому CI, сервер и коллеги получают одинаковый код. composer update пересчитывает…

Варианты ответа

  1. Без него Composer не найдёт пакеты на Packagist при установке
  2. Он нужен только библиотекам, а приложениям его коммитить не надо
  3. Он фиксирует точные версии, и install везде ставит одно и то жеправильный ответ
  4. В нём хранятся токены к приватным репозиториям для деплоя

Разбор

composer.json описывает допустимые диапазоны версий, а composer.lock точные установленные версии с хешами. composer install ставит ровно то, что в lock, поэтому CI, сервер и коллеги получают одинаковый код. composer update пересчитывает версии и переписывает lock. Для библиотек lock обычно не публикуют, но для приложений коммитят обязательно. Секреты хранят в auth.json, который в репозиторий не кладут.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.