File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -1544,6 +1544,7 @@ class Compilation extends Tapable {
15441544
15451545 createChunkAssets ( ) {
15461546 const outputOptions = this . outputOptions ;
1547+ const cachedSourceMap = new Map ( ) ;
15471548 for ( let i = 0 ; i < this . chunks . length ; i ++ ) {
15481549 const chunk = this . chunks [ i ] ;
15491550 chunk . files = [ ] ;
@@ -1568,10 +1569,21 @@ class Compilation extends Tapable {
15681569 source = this . cache [ cacheName ] . source ;
15691570 } else {
15701571 source = fileManifest . render ( ) ;
1572+ // Ensure that source is a cached source to avoid additional cost because of repeated access
1573+ if ( ! ( source instanceof CachedSource ) ) {
1574+ const cacheEntry = cachedSourceMap . get ( source ) ;
1575+ if ( cacheEntry ) {
1576+ source = cacheEntry ;
1577+ } else {
1578+ const cachedSource = new CachedSource ( source ) ;
1579+ cachedSourceMap . set ( source , cachedSource ) ;
1580+ source = cachedSource ;
1581+ }
1582+ }
15711583 if ( this . cache ) {
15721584 this . cache [ cacheName ] = {
15731585 hash : usedHash ,
1574- source : source = ( source instanceof CachedSource ? source : new CachedSource ( source ) )
1586+ source
15751587 } ;
15761588 }
15771589 }
You can’t perform that action at this time.
0 commit comments