我不明白 go_package_prefix 代码片段在生成 protobuf 文件中的用途
version: v1
managed:
enabled: true
go_package_prefix:
default: github.com/imsobad/grpc-gateway-demo
except:
- buf.build/googleapis/googleapis
plugins:
- plugin: buf.build/protocolbuffers/go:v1.30.0
out: gen/go
opt:
- paths=source_relative
- plugin: buf.build/grpc/go:v1.3.0
out: gen/go
opt:
- paths=source_relative
- require_unimplemented_servers=false
- plugin: grpc-gateway
out: gen/go
opt:
- paths=source_relative
- generate_unbound_methods=true
Run Code Online (Sandbox Code Playgroud)
我想了解命令“go_package_prefix”是如何工作的
我有一个具有以下结构的 protobuf 存储库:
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 protos\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 buf.yaml\n\xe2\x94\x82 \xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 time.proto\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 internal\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 buf.yaml\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 user\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 user.proto\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 buf.gen.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 buf.work.yaml\nRun Code Online (Sandbox Code Playgroud)\n`time.proto 的存根是:
\nsyntax = "proto3";\npackage common;\n\noption go_package = "github.com/my-org/protobuf-gen-go/gopb"; // golang\n\n// Message definition here\nRun Code Online (Sandbox Code Playgroud)\n并user.proto引用该文件。这是它的存根:
syntax = "proto3";\npackage internal.dynamodb;\n\nimport "common/time.proto";\n\noption go_package = "github.com/my-org/protobuf-internal/user"; // golang\n\n// Message definition here\nRun Code Online (Sandbox Code Playgroud)\n这两个buf.yaml文件看起来都是这样的:
version: v1\nbreaking:\n use:\n - FILE\nlint:\n use:\n - DEFAULT\nRun Code Online (Sandbox Code Playgroud)\n看起来buf.work.yaml像这样:
version: v1\ndirectories:\n - protos/common\n …Run Code Online (Sandbox Code Playgroud)