It is configured through a
buf.yaml file that should be checked in to the root of your Protobuf file hierarchy. Buf will automatically read this file if present. Configuration can also be provided via the command-line flag
--config, which accepts a path to a
.yaml file, or direct JSON or YAML data. As opposed to
protoc, where all
.proto files are manually specified on the command-line, buf operates by recursively discovering all
.proto files under configuration and building them.
The following is an example of a valid configuration, and you would put it in the root of your Protobuf file hierarchy, e.g. in
proto/buf.yaml relative to the root of your repository.
version: v1 name: buf.build/myuser/myrepo
To generate type and gRPC stubs for Go, create the file
version: v1 plugins: - name: go out: proto opt: paths=source_relative - name: go-grpc out: proto opt: paths=source_relative
We use the
go-grpc plugins to generate Go types and gRPC service definitions. We’re outputting the generated files relative to the
proto folder, and we’re using the
paths=source_relative option, which means that the generated files will appear in the same directory as the source
$ buf generate
This will have generated a
*.pb.go and a
*_grpc.pb.go file for each protobuf package in our
proto file hierarchy.