Я тестирую grpc-gateway и пытаюсь выяснить, как лучше всего импортировать зависимости в мою службу grpc. У меня следующая структура каталога:
proto/
api.proto
api2.proto
third_party/
googleapis/
google/
api/
http.proto
annotations.proto
buf.yaml
buf.gen.yaml
конфигурация buf.yaml
version: v1beta1
build:
roots:
- third_party/googleapis
- third_party/grpc-gateway
- proto
Две вещи
- Как вы заметили, я использую buf.build для генерации прото-файлов (вы можете игнорировать этот факт, если знаете способ получше );
- Я не копирую
googleapi
в прото-файлы намеренно и хотел бы хранить их где-нибудь отдельно. Я знаю, что Google рекомендует хранить все в папкеproto
и просто копировать зависимые файлы (например,google/api/annotations.proto
), но я не фанат копировать десятки зависимостей в свой исходный код, если я могу как-то этого избежать.
У меня вопрос: всякий раз, когда я запускаю buf generate --path=./proto
(обратите внимание, что путь задан как каталог), я получаю файлы googleapis
pb.go
, скопированные в папку proto/googleapis/
. Меня это очень раздражает, и я не могу понять, что не так с моей настройкой. Если я укажу каждый файл напрямую, все в порядке (например, buf generate --path=./proto/api.proto
), сторонний контент не копируется.
Есть ли способ игнорировать third_party
папки на buf generate
, и если нет, есть ли лучший способ управлять зависимостями grpc? Копирование файлов напрямую в каждый проект grpc не имеет для меня никакого смысла.