使用 buf 替代 protoc 自动生成 protobuf

520 阅读1分钟

编写 proto 文件后,会发现没有格式化,并且可能多人合作 pb文件会花样百出。偶然间发现 buf 这个工具还是比较强大的。

安装 buf

1.方法一

brew install bufbuild/buf/buf

2.方法二

go install github.com/bufbuild/buf/cmd/buf@v1.34.0

更多方式请参考 Install the Buf CLi

检查是否安装成功

buf --version
1.34.0

初始化项目

进入到 proto 的根目录,执行命令buf config init会自动生成buf.yaml文件

version: v2
lint:
  use:
    - DEFAULT
breaking:
  use:
    - FILE

更多配置参考 buf-yaml 创建 buf.gen.yaml文件,该文件替换了protoc所配置的插件等,即用 文件的形式 替代命令行的形式,这个还是很方便的。可以参考文章写给go开发者的gRPC教程-protobuf基础

# buf.gen.yaml
version: v2
plugins:
  - remote: buf.build/protocolbuffers/go
    # 输出到当前目录
    out: .
    opt:
      - paths=source_relative

其中可以使用 buf format -w --exit-code 来格式化proto文件,也可以使用 buf lint 来检验proto文件,例如驼峰改为下划线等。 接下来就可以使用 buf generate 来生成 .go文件了。

更多使用可以参考: Buf Docs