Buf 工具链快速开始指南¶
安装和设置¶
1. 安装工具¶
2. 初始化项目¶
日常开发工作流¶
修改 Protobuf 文件后¶
# 1. 格式化代码
make buf-format
# 2. 检查代码规范
make buf-lint
# 3. 检查破坏性变更 (可选)
make buf-breaking
# 4. 重新生成代码
make generate
添加新依赖¶
如果需要添加新的 protobuf 依赖,编辑 api/proto/buf.yaml 文件:
deps:
- buf.build/googleapis/googleapis
- buf.build/bufbuild/protovalidate
- buf.build/envoyproxy/protoc-gen-validate
- buf.build/your-org/your-repo # 添加新依赖
然后运行:
Buf 配置文件说明¶
buf.gen.yaml (项目根目录)¶
- 代码生成配置
- 定义使用哪些插件和输出选项
buf.work.yaml (项目根目录)¶
- 工作空间配置
- 管理多模块项目,指向
api/proto目录
api/proto/buf.yaml¶
- 模块级别的配置
- 定义模块名称、依赖、linting 和 breaking change 规则
api/proto/buf.lock (自动生成)¶
- 依赖锁定文件
- 确保构建的可重现性
常用命令¶
# 生成代码
make generate
# 更新依赖
make buf-deps
# 代码检查
make buf-lint
# 格式化代码
make buf-format
# 检查破坏性变更
make buf-breaking
# 查看所有可用命令
make help
故障排除¶
依赖解析问题¶
如果遇到依赖解析问题:
Linting 错误¶
常见的 linting 问题:
- RPC 命名: 确保 RPC 方法使用 PascalCase
- 字段命名: 确保字段使用 snake_case
- 包结构: 确保包名遵循规范
破坏性变更检查失败¶
如果破坏性变更检查失败但变更是有意的:
# 跳过破坏性变更检查 (谨慎使用)
buf breaking --against '.git#branch=main' --config '{"version":"v1","breaking":{"use":["FILE"]},"lint":{"use":["DEFAULT"]}}'
最佳实践¶
- 提交前检查: 始终在提交前运行
make buf-lint和make generate - 依赖管理: 定期运行
make buf-deps更新依赖 - 代码格式: 使用
make buf-format保持代码格式一致 - 版本控制: 将
buf.lock文件提交到版本控制系统 - CI/CD: 在 CI/CD 流水线中包含 buf 检查步骤