@@ -294,23 +294,18 @@ export class AngularWebpackPlugin {
294
294
}
295
295
296
296
private async rebuildRequiredFiles (
297
- modules : compilation . Module [ ] ,
297
+ modules : Iterable < compilation . Module > ,
298
298
compilation : WebpackCompilation ,
299
299
fileEmitter : FileEmitter ,
300
- ) {
301
- const rebuild = ( filename : string ) =>
302
- new Promise < void > ( ( resolve ) => {
303
- const module = modules . find (
304
- ( { resource } : compilation . Module & { resource ?: string } ) =>
305
- resource && normalizePath ( resource ) === filename ,
306
- ) ;
307
- if ( ! module ) {
308
- resolve ( ) ;
309
- } else {
310
- compilation . rebuildModule ( module , resolve ) ;
311
- }
312
- } ) ;
300
+ ) : Promise < void > {
301
+ if ( this . requiredFilesToEmit . size === 0 ) {
302
+ return ;
303
+ }
304
+
305
+ const rebuild = ( webpackModule : compilation . Module ) =>
306
+ new Promise < void > ( ( resolve ) => compilation . rebuildModule ( webpackModule , resolve ) ) ;
313
307
308
+ const filesToRebuild = new Set < string > ( ) ;
314
309
for ( const requiredFile of this . requiredFilesToEmit ) {
315
310
const history = this . fileEmitHistory . get ( requiredFile ) ;
316
311
if ( history ) {
@@ -323,13 +318,23 @@ export class AngularWebpackPlugin {
323
318
) {
324
319
// New emit result is different so rebuild using new emit result
325
320
this . requiredFilesToEmitCache . set ( requiredFile , emitResult ) ;
326
- await rebuild ( requiredFile ) ;
321
+ filesToRebuild . add ( requiredFile ) ;
327
322
}
328
323
} else {
329
324
// No emit history so rebuild
330
- await rebuild ( requiredFile ) ;
325
+ filesToRebuild . add ( requiredFile ) ;
331
326
}
332
327
}
328
+
329
+ if ( filesToRebuild . size > 0 ) {
330
+ for ( const webpackModule of [ ...modules ] ) {
331
+ const resource = ( webpackModule as compilation . Module & { resource ?: string } ) . resource ;
332
+ if ( resource && filesToRebuild . has ( normalizePath ( resource ) ) ) {
333
+ await rebuild ( webpackModule ) ;
334
+ }
335
+ }
336
+ }
337
+
333
338
this . requiredFilesToEmit . clear ( ) ;
334
339
this . requiredFilesToEmitCache . clear ( ) ;
335
340
}
0 commit comments