33 Author Tobias Koppers @sokra
44*/
55function hasModule ( chunk , module , checkedChunks ) {
6- if ( chunk . modules . indexOf ( module ) >= 0 ) return true ;
6+ if ( chunk . modules . indexOf ( module ) >= 0 ) return [ chunk ] ;
77 if ( chunk . entry ) return false ;
88 return allHaveModule ( chunk . parents . filter ( function ( c ) {
99 return checkedChunks . indexOf ( c ) < 0 ;
@@ -12,11 +12,21 @@ function hasModule(chunk, module, checkedChunks) {
1212
1313function allHaveModule ( someChunks , module , checkedChunks ) {
1414 if ( ! checkedChunks ) checkedChunks = [ ] ;
15+ var chunks = [ ] ;
1516 for ( var i = 0 ; i < someChunks . length ; i ++ ) {
1617 checkedChunks . push ( someChunks [ i ] ) ;
17- if ( ! hasModule ( someChunks [ i ] , module , checkedChunks ) ) return false ;
18+ var subChunks = hasModule ( someChunks [ i ] , module , checkedChunks ) ;
19+ if ( ! subChunks ) return false ;
20+ addToSet ( chunks , subChunks ) ;
1821 }
19- return true ;
22+ return chunks ;
23+ }
24+
25+ function addToSet ( set , items ) {
26+ items . forEach ( function ( item ) {
27+ if ( set . indexOf ( item ) < 0 )
28+ set . push ( item ) ;
29+ } ) ;
2030}
2131
2232function RemoveParentModulesPlugin ( ) {
@@ -29,7 +39,9 @@ RemoveParentModulesPlugin.prototype.apply = function(compiler) {
2939 chunks . forEach ( function ( chunk ) {
3040 chunk . modules . slice ( ) . forEach ( function ( module ) {
3141 if ( chunk . entry ) return ;
32- if ( allHaveModule ( chunk . parents , module ) ) {
42+ var parentChunksWithModule = allHaveModule ( chunk . parents , module ) ;
43+ if ( parentChunksWithModule ) {
44+ module . rewriteChunkInReasons ( chunk , parentChunksWithModule ) ;
3345 chunk . removeModule ( module ) ;
3446 }
3547 } ) ;
0 commit comments