Вендоринг в Go: зачем он ещё нужен и чем отличается от кеша модулей
Вендоринг — копирование исходников всех зависимостей в каталог vendor/ внутри репозитория. До появления модулей это был единственный способ зафиксировать зависимости; сейчас он не нужен для воспроизводимости, потому что её и так обеспечивают алгоритм минимальных версий с go.sum. Тем не менее вендоринг остаётся в трёх ситуациях: сборка в среде без сети вообще, требование аудита иметь весь собираемый код в репозитории, и защита от исчезновения зависимости у тех, кто не доверяет прокси. Механика простая: go mod vendor создаёт каталог, и при наличии vendor/ тулчейн автоматически переключается в режим -mod=vendor — модули больше не скачиваются, а кеш не используется. Отличие от кеша принципиально: кеш общий для всех проектов, лежит вне репозитория и заполняется по требованию; vendor/ относится к одному проекту, попадает в git и раздувает историю. Главная опасность — расхождение: vendor/ не обновляется сам.