sh - Protobuf Build Protoc 选择目录中的所有 .proto 文件
问题描述
我运行以下.sh
文件来构建我的原型。
mkdir -p ./src/gen
protoc -I=../protos/ \
../protos/common/*.proto \
../protos/service/protos/*.proto \
../protos/ui/*.proto \
../protos/*.proto \
--js_out=import_style=commonjs,binary:./src/gen \
--grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:./src/gen
它工作得很好,但是,我的团队可能会将其他目录添加到protos
该文件看不到的目录中。
有没有办法让我更新这个脚本来获取.proto
目录中的所有文件protos
?
我尝试了以下方法,但没有奏效:
mkdir -p ./src/gen
protoc -I=../protos/**/*.proto \
--js_out=import_style=commonjs,binary:./src/gen \
--grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:./src/gen
我确定这只是一些语法问题,但我不知道该怎么做。
编辑:
我已经实现了一些东西来使我的生成器更加灵活,但它仍然很混乱:
mkdir -p ./src/gen
protoc -I=../protos/ \
../protos/*.proto \
../protos/**/*.proto \
../protos/**/**/*.proto \
../protos/**/**/**/*.proto \
../protos/**/**/**/**/*.proto \
--js_out=import_style=commonjs,binary:./src/gen \
--grpc-web_out=import_style=commonjs+dts,mode=grpcwebtext:./src/gen
解决方案
由于您的脚本将传递每个文件的完整路径,因此添加protos/
带有-I=../protos
. 下面的代码对我来说很好,在不同的子文件夹中有多个 proto 文件。
$ tree ../protos
../protos
├── a
│ └── a.proto
└── b
├── b.proto
└── c
└── c.proto
$ protoc \
-I=../protos \
../protos/**/*.proto \
--js_out=import_style=commonjs,binary:./src/gen
$ tree src/gen
src/gen
├── a
│ └── a_pb.js
└── b
├── b_pb.js
└── c
└── c_pb.js
3 directories, 3 files
在您最初的问题中,您可能只是混淆../protos/*/**.proto
了../protos/**/*.proto
.
推荐阅读
- r - data.frame 中列中先前值的平均值
- c++ - 向后迭代 LED 时,FastLED 库不工作
- swift - 使用 Swift 从数字数组中获取非重复数字数组
- kotlin - 如何将数据作为对象名称从 Fragment 发送到 Activity
- javascript - 直接在 node.js 中包含文件
- javascript - 合并对象数组的相同属性并在该对象数组中为不同属性创建对象数组
- javascript - Firebase 实时数据库 - 数据库触发器结构最佳实践
- angular - 如何以角度进行覆盖入职、演练、产品导览
- java - GenericXmlApplicationContext 与 ClassPathXmlApplicationContext
- web-scraping - Rvest 不会返回数据