google buf 管理proto,以及从新归档文件的目录结构
什么是 BSR?
BSR 将 Protobuf 文件作为版本化模块进行存储和管理,以便个人和组织可以轻松使用和发布他们的 API。
BSR 带有可浏览的 UI、依赖项管理、API 验证、版本控制、生成的文档以及支持远程代码生成的可扩展插件系统。
BSR 目标
-
集中式注册表- BSR 是跟踪和改进 Protobuf API 的真实来源。集中式注册表可让您保持兼容性和管理依赖项,同时让您的客户端能够可靠高效地使用 API。拥有集中式、支持 Protobuf 的注册表还有额外的好处,可以防止构建失败。
-
依赖管理- BSR终于将依赖管理引入了 Protobuf 生态系统。您现在可以在项目中声明、解析和使用托管的 BSR 模块作为依赖项。
简而言之,您不再需要复制.proto
文件依赖项。CLIbuf
直接与 BSR 交互以获取您的依赖项(类似于npm
Node.js、pip
Python、cargo
Rust 和 Go 中的 Go 模块)。
-
UI 和文档- BSR 通过可浏览的 UI 为您的 Protobuf 文件提供完整的文档,其中包含语法突出显示、定义和参考。
-
远程插件- Buf 团队管理可在 buf.gen.yaml文件中引用的托管 Protobuf 插件。代码生成在 BSR 上远程进行,生成的源代码将写入磁盘。
-
生成的 SDK - BSR 通过您可以获取的托管软件存储库公开生成的工件,就像使用您已知的工具获取的任何其他库一样:
go get
、、或。npm install
mvn
gradle
上面是buf官网的简介,官网地址 https://buf.build/docs/introduction
安装的方法参考官网的安装
首先在项目的根目录下执行
buf mod init
根目录下会对出一个 buf.yaml
version: v2
modules:- path: api- path: third_party
lint:use:- DEFAULT
breaking:use:- FILE
在新创建一个文件 buf.gen.yaml
touch buf.gen.yaml#写入如下内容version: v2
plugins:- local: protoc-gen-goout: genopt:- paths=source_relative- local: protoc-gen-go-grpcout: genopt:- paths=source_relative- local: protoc-gen-go-httpout: genopt:- paths=source_relative- local: protoc-gen-go-errorsout: genopt:- paths=source_relative- local: protoc-gen-validateout: genopt:- paths=source_relative- lang=go
执行 buf generate 会在gen目录下生成代码
把根据kratos-layout模版生成的目录进行删除 删除如下目录
#创建一个app目录
mkdir appcd app#从新生成一个新的项目模版 --nomod 不生成其他的文件只生成 cmd configs innnternalkratos new users --nomod#需要把原来的helloword的模版生成的 xgs_kratos/api/go/helloworld/v1 替换成新的 xgs_kratos/gen/go/helloworld/v1 新生成的代码都在gen目录下面#在 app/users下直接执行 kratos run
最终项目的目录如下,如果是多个服务可以在app下继续生成