vendor/ — локальная копия всех зависимостей внутри проекта. Создаётся через go mod vendor.
go mod vendor # копирует зависимости в vendor/
go build -mod=vendor # сборка из vendor
Зачем:
- Офлайн-сборка — не нужен доступ к интернету/proxy
- Контроль — точно знаешь, какой код попадёт в бинарник
- Скорость CI — не скачивает зависимости каждый раз
project/
├── go.mod
├── go.sum
├── vendor/
│ ├── modules.txt
│ ├── github.com/gin-gonic/gin/
│ └── google.golang.org/grpc/
└── main.go
Если vendor/ есть — go build использует её автоматически. В go.mod ничего менять не нужно.
Сейчас vendor менее популярен: GOMODCACHE + CI-кеширование решают те же задачи без хранения зависимостей в репо.