Как стать автором
Обновить

Composer — the right way

Время на прочтение2 мин
Количество просмотров15K
The right way? Or the left one?

У нас давеча сложилась очень интересная и горячая дискуссия с коллегами по поводу использования Composer-а в проектах, над которыми мы работаем. Очень бы хотелось услышать мнение «широкой общественности» по этому вопросу.

Камнем преткновения стал очень простой вопрос:

Стоит ли хранить содержимое папки vendor в наших репозиториях?


Как Вы, в общем наверняка уже догадались, мнения разделились:

ДА
Это часть нашего приложения, за которое мы несем ответственность и все зависимоасти должны храниться в одном месте. В данном случае имеетс в виду, что без сторонних библиотек наш код теряет функциональность.
Контр-аргумент: в таком случае, нам надо еще завести в свой репозиторий используемые пакеты уровня операционной системы (apt-get, например). Ведь при использовании аналогичного инструмента в Java — Maven, например, никто же не хранит сторонние зависимости, а только описание оных. Сюда же можно отнести npm, pip и прочие.

НЕТ
Это 3-rd party библиотеки, которые мы просто используем. Желаемого эффекта «неизменности» можно достичь жесткой фиксацией версии библиотеки в composer.json.
Контр-аргумент: отсутствие контроля над разработкой стороннего кода. В случае закрытия или «плохого кода» в проекте вендора, мы теряем функциональность.

Для полноты картины, пройдите, пожалуйста, небольшой опрос.

Ссылки:


UPDATE 1
В качестве зависимостей в данном случае имеются в виду официальные SDK для сторонних API, например, или инструменты автоматизации. Т.е. данные пакеты не могут исчезнуть за 1 день.

UPDATE 2
Обсуждение подразумевает хранение вендорского кода ни на прокси для packagist, ни в отдельных форках, а прямо в репозитории с проектом.

UPDATE 3
Под проектом подразумевается некое web-приложение или сервис, но не библиотека, разрабатываемая компанией.

UPDATE 4
В проекте есть и активно используется build для сборки js/css файлов. Это важно, потому что в этот процесс (по мнению автора) должна быть включена сборка php зависимостей.

UPDATE 5
Вышеупомянутые build-ы запускаются на тестовом окружении (или специальном build-сервере) и выкатываются на боевые сервера уже в готовом виде. Это значит что ситуация с разными версиями пакетов между test/stage/live в принципе не возможна.

UPDATE 6 & FINAL
Спасибо всем большое за дискуссию, ссылки и мнения. Эффект от статьи получился именно такой, как того задумал автор.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Стоит ли хранить содержимое папки vendor в наших репозиториях?
15.91% да137
77% нет663
7.08% что такое Composer?61
Проголосовал 861 пользователь. Воздержались 159 пользователей.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Ваш (приблизительный) стаж разработки на php:
6.51% меньше года55
15.15% 1-3 года128
26.86% 3-5 лет227
37.87% 5-10 лет320
13.61% больше 10 лет115
Проголосовали 845 пользователей. Воздержались 168 пользователей.
Теги:
Хабы:
Всего голосов 33: ↑16 и ↓17-1
Комментарии141

Публикации

Истории

Работа

PHP программист
200 вакансий

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн