Нужно ли добавлять файл composer.lock в git?

«Нужно ли добавлять файл composer.lock в git?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, для проектов-приложений composer.lock обязательно нужно коммитить в репозиторий. Этот файл фиксирует точные версии всех установленных зависимостей, включая их транзитивные зависимости. Это гарантирует, что все разработчики в команде и продакшен-среда используют идентичные версии пакетов, что предотвращает ошибки из-за расхождений в версиях.

Пример .gitignore для приложения (PHP-проекта):

/vendor/
.env

Исключение: Если вы разрабатываете библиотеку, которую будут подключать в другие проекты, то composer.lock коммитить не следует. Библиотека должна быть совместима с диапазоном версий, указанным в composer.json, чтобы не навязывать конечным приложениям конкретные версии зависимостей.

Пример .gitignore для библиотеки:

/vendor/
composer.lock