简介
buf 可以做 protoc 的替代品
- buf 效率比 protoc 更好
- buf 使用 yaml 文件,使用更清晰
NOTE:
- 目前不支持 Windows,下面为 linux 演示
- 官方文档:https://docs.buf.build/
- 演示完整代码:https://github.com/dengjiawen8955/buf_demo
快速开始
1. 安装
官方提供 3 种安装方式
- bin
- tar package
- go/bin
这里演示第一种( 其他参考官方文档:https://docs.buf.build/)
运行命令行(Linux)
BIN="/usr/local/bin" && \
VERSION="0.43.2" && \
BINARY_NAME="buf" && \
curl -sSL \
"https://github.com/bufbuild/buf/releases/download/v${VERSION}/${BINARY_NAME}-$(uname -s)-$(uname -m)" \
-o "${BIN}/${BINARY_NAME}" && \
chmod +x "${BIN}/${BINARY_NAME}"
检查是否安装成功
[root@c03 buf_demo]# buf --version
0.43.2
2. protobuf 文件准备
建议下载 demo 完整代码
git clone git@github.com:dengjiawen8955/buf_demo.git
#
cd buf_demo
创建一个新文件 echo.proto
syntax = "proto3";
package gateway_5;
option go_package = "gateway_5/";
message StringMessage {
string value = 1;
}
service YourService {
rpc Echo(StringMessage) returns (StringMessage) {}
}
2. buf.gen.yaml 文件准备
创建一个新文件 buf.gen.yaml
3. 生成代码
cd demo
#generate code
buf generate
查看效果
[root@c03 buf_demo]# cd demo/
[root@c03 demo]# buf generate
[root@c03 demo]# ls
buf.gen.yaml echo_grpc.pb.go echo.pb.go echo.proto
[root@c03 demo]#