buf实际上是一个围绕protocol buffers 的工具链,包含了不少东西,对于我们来说使用比较多的就是buf cli
以下主要说明下buf cli 的简单使用
buf 的能力
包含了lint,gen,workspace 管理,formater,deps 管理
简单使用
- 初始化项目
项目目的,创建一个简单的基于grpc 的service 定义,基于buf 进行模块以及依赖管理
基本项目结构
├── README.md
├── buf.gen.yaml // 代码生成
├── buf.work.yaml // 工作空间
├── buf.yaml // 包定义,看设计添加,不是强需
├── go.mod
├── go.sum
└── protocs // proto 定义
├── externelapi
│ └── v1
│ └── externelapi.proto
└── userlogin
└── v1
└── userlogin.proto
- buf.gen.yaml
代码生成配置
version: "v1"
plugins:
- name: go
out: pkg // 输出路径
opt: paths=source_relative // 相对路径,比较方便外部集成
- name: go-grpc
out: pkg
opt:
- paths=source_relative
- require_unimplemented_servers=false
- buf.yaml 核心是lint ,包定义需要的
version: v1
breaking:
use:
- FILE
lint:
use:
- DEFAULT
- buf.work.yaml 定义workspace 配置
version: "v1"
directories:
- protocs
- proto 定义
没什么特殊的,就是定义,可以参考实际调整
命令使用
一般需要使用到的命令包含了lint,build,generate ,都比较简单,lint 比较有用,完整代码参考github