From 4742f9d57ee6602c81dae9439dd529dcb9701256 Mon Sep 17 00:00:00 2001 From: Michael Lumish Date: Wed, 31 Mar 2021 13:04:05 -0700 Subject: [PATCH] Combine output for input files with the same basename --- packages/proto-loader/bin/proto-loader-gen-types.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/proto-loader/bin/proto-loader-gen-types.ts b/packages/proto-loader/bin/proto-loader-gen-types.ts index 8a8a082d..90a83bb9 100644 --- a/packages/proto-loader/bin/proto-loader-gen-types.ts +++ b/packages/proto-loader/bin/proto-loader-gen-types.ts @@ -670,9 +670,18 @@ function writeFilesForRoot(root: Protobuf.Root, masterFileName: string, options: async function writeAllFiles(protoFiles: string[], options: GeneratorOptions) { await fs.promises.mkdir(options.outDir, {recursive: true}); + const basenameMap = new Map(); for (const filename of protoFiles) { - const loadedRoot = await loadProtosWithOptions(filename, options); - writeFilesForRoot(loadedRoot, path.basename(filename).replace('.proto', '.ts'), options); + const basename = path.basename(filename).replace(/\.proto$/, '.ts'); + if (basenameMap.has(basename)) { + basenameMap.get(basename)!.push(filename); + } else { + basenameMap.set(basename, [filename]); + } + } + for (const [basename, filenames] of basenameMap.entries()) { + const loadedRoot = await loadProtosWithOptions(filenames, options); + writeFilesForRoot(loadedRoot, basename, options); } }