0.0.3 • Published 5 months ago
et.nod.pbx v0.0.3
ET.NOD.PBX
NOD.PBX 工具简化了 Protocol Buffers 和 gRPC 的安装与使用,支持多种编程语言的代码生成。
功能特性
多语言支持
语言 | Protobuf | gRPC | XProto |
---|---|---|---|
Go | ✅ | ✅ | ✅ |
C#(.NET) | ❓ | ❓ | ❌ |
JavaScript(Web) | ✅ | ✅ | ➖ |
Lua | ❌ | ❌ | ➖ |
- ✅已支持 ❓开发中 ❌未支持 ➖不适用
工具链管理
- 🚀 一键安装 protoc/gRPC 工具链
- 🌐 优化中国区镜像访问限制
操作手册
1. 安装工具
npm install et.nod.pbx
2. 命令说明
protox - 主命令
与 protoc 区分的工具入口命令。
protox [options]
选项:
- --help:查看文档
- --version:显示版本
- --install:安装工具链
- --all:安装所有工具链
- --protoc=:protoc 工具版本,默认:29.2
- --protoc-gen-go=:protoc-gen-go 工具版本,默认:latest
- --protoc-gen-go-grpc=:protoc-gen-go-grpc 工具版本,默认:latest
- --protoc-gen-js=:protoc-gen-js 工具版本,默认:3.21.4
- --protoc-gen-web-grpc=:protoc-gen-web-grpc 工具版本,默认:1.5.0
- --protoc-gen-ts=:protoc-gen-ts 工具版本,默认:latest
- --gitproxy=:git 代理地址,默认:https://ghproxy.cn/
- --goproxy=:go 代理地址,默认:https://goproxy.cn,direct
- --npmproxy=:npm 代理地址,默认:https://registry.npmmirror.com/
- --xxx_out:与原生工具参数相同
protoc - 原生命令
Protocol Buffers 原生编译工具。
protoc [options] proto_files
选项:
- --help:查看文档
- --version:显示版本
- --xxx_out:编译 proto 文件
代码生成插件
- protoc-gen-go-pbx 解析 gRPC 服务描述并注册至 XProto 协议。
--go-pbx_out=/path/to/output
- protoc-gen-js-fix 修复 ES6 模式下的库导入及模块导出问题。
--js-fix_out=/path/to/input:/path/to/output
- protoc-gen-ts-fix 修复 gRPC-Web 模式下的代码生成问题。
--ts-fix_out=/path/to/input:/path/to/output
常见问题
如有问题,请提交 问题反馈。
1. proto 文件编译
- protoc 命令会自动注入 proto 库目录和工具链路径
- 支持
*.proto
匹配一级目录,不支持**/*.proto
递归匹配
2. TypeScript 导入错误
问题:protoc-gen-ts-fix 生成的文件中 import XXX from "XXX"
报错
解决:在 tsconfig.json 中添加 "esModuleInterop":true
3. Protocol Buffers 枚举命名
- 同一个 package 中的枚举值必须唯一,即使它们属于不同的枚举类型
- 例如:MemMode 使用
None
,LogLevel 使用Undefined
作为默认值,避免命名冲突 - 这是因为枚举值使用 C++ 作用域规则,它们是类型的兄弟而不是子级