buf 工具简单学习

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

参考资料

https://docs.buf.build/introduction
https://github.com/rongfengliang/buf-learning

posted on 2022-09-17 22:18  荣锋亮  阅读(643)  评论(0编辑  收藏  举报

导航