diff --git a/packages/ngtools/webpack/src/ivy/plugin.ts b/packages/ngtools/webpack/src/ivy/plugin.ts index ac173a48483b..8f8d905ef1c4 100644 --- a/packages/ngtools/webpack/src/ivy/plugin.ts +++ b/packages/ngtools/webpack/src/ivy/plugin.ts @@ -331,9 +331,6 @@ export class AngularWebpackPlugin { return; } - const rebuild = (webpackModule: Module) => - new Promise((resolve) => compilation.rebuildModule(webpackModule, () => resolve())); - const filesToRebuild = new Set(); for (const requiredFile of this.requiredFilesToEmit) { const history = this.fileEmitHistory.get(requiredFile); @@ -356,12 +353,17 @@ export class AngularWebpackPlugin { } if (filesToRebuild.size > 0) { - for (const webpackModule of [...modules]) { + const rebuild = (webpackModule: Module) => + new Promise((resolve) => compilation.rebuildModule(webpackModule, () => resolve())); + + const modulesToRebuild = []; + for (const webpackModule of modules) { const resource = (webpackModule as NormalModule).resource; if (resource && filesToRebuild.has(normalizePath(resource))) { - await rebuild(webpackModule); + modulesToRebuild.push(webpackModule); } } + await Promise.all(modulesToRebuild.map((webpackModule) => rebuild(webpackModule))); } this.requiredFilesToEmit.clear();