Protobuf Build Protoc select 目录中的所有 .proto 文件
Protobuf Build Protoc select all .proto files in a directory
我有以下 .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
目录添加此文件看不到的其他目录。
我有办法更新此脚本以获取 protos
目录中的所有 .proto
文件吗?
我尝试了以下方法,但没有用:
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
由于您的脚本将传递每个文件的完整路径,因此添加带有 -I=../protos
的 protos/
文件夹应该就足够了。下面的代码对我来说工作正常,在不同的子文件夹中有多个原型文件。
$ 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
。
我有以下 .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
目录添加此文件看不到的其他目录。
我有办法更新此脚本以获取 protos
目录中的所有 .proto
文件吗?
我尝试了以下方法,但没有用:
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
由于您的脚本将传递每个文件的完整路径,因此添加带有 -I=../protos
的 protos/
文件夹应该就足够了。下面的代码对我来说工作正常,在不同的子文件夹中有多个原型文件。
$ 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
。