【问题标题】:How do I only generate protobuf messages for the import path?如何只为导入路径生成 protobuf 消息?
【发布时间】:2021-02-09 12:48:12
【问题描述】:

如果我有以下目录结构:

├── proto
│   ├── common
│   │   ├── date.proto         # No dependencies
│   │   ├── user.proto         # No dependencies
│   ├── services
│   │   └── service1.proto     # import "common/date.proto"; (doesn't import common/user.proto)

当我运行以下命令时:

protoc -I=proto/\
  --go_out=paths=source_relative:./gen \
  proto/services/service1.proto

仅生成 service1.proto 的代码,date.proto 不会生成。

所以我改用 glob 模式:

protoc -I=proto/\
  --go_out=paths=source_relative:./gen \
  proto/**/*.proto

但这也会生成user.proto,这会导致代码库膨胀,因为我们的架构有数百个文件。

有没有通过protoc命令直接在导入路径上生成proto文件而不指定依赖?

【问题讨论】:

    标签: protocol-buffers grpc


    【解决方案1】:

    没有这样的魔法,因为protoc 不会查看您的原始源文件来解析依赖关系树。你必须告诉protoc 在哪里搜索导入的原型。导入也只是依赖,protoc 不会为依赖生成代码,除非它们也是源代码。

    你可能想这样做:

    protoc -I=proto/\
      --go_out=paths=source_relative:./gen \
      proto/services/service1.proto proto/common/date.proto
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多