Задать вопрос
@kolya_krut

Надо ли класть composer.lock в VCS?

Здравствуйте.
Вот говорят, что composer.lock надо класть в vcs, чтобы типа гарантировать у всех разработчиков идентичность загруженных модулей. Но что если есть модули, которые нужны только в разработке.
Например, на продакше не нужны всякие phpunit. Записываем его в секцию require-dev и на продакшн не таскаем, т.е. обновляем композер с --no-dev. Получается у разрабов полный набор, а на проде только необходимое.
Верен ли такой подход? Или надо менять структуру проекта, чтобы composer.lock все-таки был в репозитории?
  • Вопрос задан
  • 1811 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
Ну дык в composer.lock есть секции packages и packages-dev, там они тоже разделяются. composer.lock иметь в репозитории надо.
Ответ написан
Комментировать
artem90
@artem90
TeamLead, Developer
При наличии composer.lock у вас будут следующие плюсы:
- установка будет гораздо быстрее, так все уже просчитано в лок файле.
- install гарантировано установит нужную версию из нужного источника в lock файле. При использовании update может быть ситуация, что на проде пакет версии 1.0.1, а у Вас 1.0.0.
Ответ написан
Комментировать
dmitriylanets
@dmitriylanets
веб-разработчик
1. наличие composer.lock в репо предполагает использование одной версии всех библиотек указных в composer.json тем самым вы гарантируете стабильность при разработке своего функционала, команда composer install
2. отсутствие composer.lock предполагает что вы будите использовать последнюю версию указанных в composer.json библиотек и там самым при выполнении команды composer install у вас выполниться composer update, и тем самым возможно ситуация что вы будите разгребать кучу конфликтов вместо реализации своей фичи.

поэтому обще принятая практика обновление зависимостей всегда делается в отдельной задаче, в отдельной ветке.
Ответ написан
Комментировать
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Хранение composer.lock в VCS позволяет вам достичь консистентности версий пакетов на всех машинах, где запущено приложение (у всех разработчиков, на всех серверах).
А дальше - смотрите ответ OnYourLips.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы