It is configured through a
buf.yaml file that should be checked in to the root of your repository. 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.
All Buf operations that use your local
.proto files as input rely on a valid build configuration. This configuration tells Buf where to search for
.proto files, and how to handle imports. 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, assuming you have your
.proto files rooted in the
proto folder relative to the root of your repository.
version: v1beta1 build: roots: - proto
To generate type and gRPC stubs for Go, create the file
buf.gen.yaml at the root of the repository:
version: v1beta1 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.