@@ -7,10 +7,12 @@ var ConcatSource = require("webpack-sources").ConcatSource;
7
7
var async = require ( "async" ) ;
8
8
var ExtractedModule = require ( "./ExtractedModule" ) ;
9
9
var Chunk = require ( "webpack/lib/Chunk" ) ;
10
+ var NormalModule = require ( "webpack/lib/NormalModule" ) ;
10
11
var OrderUndefinedError = require ( "./OrderUndefinedError" ) ;
11
12
var loaderUtils = require ( "loader-utils" ) ;
12
13
var validateOptions = require ( 'schema-utils' ) ;
13
14
var path = require ( 'path' ) ;
15
+ var OriginalSource = require ( "webpack-sources" ) . OriginalSource ;
14
16
15
17
var NS = fs . realpathSync ( __dirname ) ;
16
18
@@ -233,6 +235,7 @@ ExtractTextPlugin.prototype.apply = function(compiler) {
233
235
var options = this . options ;
234
236
compiler . plugin ( "this-compilation" , function ( compilation ) {
235
237
var extractCompilation = new ExtractTextPluginCompilation ( ) ;
238
+ var toRemoveModules = { } ;
236
239
compilation . plugin ( "normal-module-loader" , function ( loaderContext , module ) {
237
240
loaderContext [ NS ] = function ( content , opt ) {
238
241
if ( options . disable )
@@ -290,9 +293,14 @@ ExtractTextPlugin.prototype.apply = function(compiler) {
290
293
return callback ( ) ;
291
294
}
292
295
if ( meta . content ) {
293
- extractCompilation . addResultToChunk ( module . identifier ( ) , meta . content , module , extractedChunk ) ;
296
+ var ident = module . identifier ( ) ;
297
+ extractCompilation . addResultToChunk ( ident , meta . content , module , extractedChunk ) ;
294
298
// remove generated result from chunk
295
- chunk . removeModule ( module ) ;
299
+ if ( toRemoveModules [ ident ] ) {
300
+ toRemoveModules [ ident ] . chunks . push ( chunk )
301
+ } else {
302
+ toRemoveModules [ ident ] = { module : module , chunks : [ chunk ] } ;
303
+ }
296
304
}
297
305
callback ( ) ;
298
306
} ) ;
@@ -323,6 +331,21 @@ ExtractTextPlugin.prototype.apply = function(compiler) {
323
331
callback ( ) ;
324
332
} . bind ( this ) ) ;
325
333
} . bind ( this ) ) ;
334
+ compilation . plugin ( "optimize-module-ids" , function ( modules ) {
335
+ modules . forEach ( function ( module ) {
336
+ var data = toRemoveModules [ module . identifier ( ) ] ;
337
+ if ( data ) {
338
+ var id = module . id ;
339
+ var newModule = new NormalModule ( module . request , module . userRequest , module . rawRequest , [ ] , module . resource , module . parser ) ;
340
+ newModule . id = id ;
341
+ newModule . _source = new OriginalSource ( '// removed by extract-text-webpack-plugin' ) ;
342
+ data . chunks . forEach ( function ( chunk ) {
343
+ chunk . removeModule ( module ) ;
344
+ chunk . addModule ( newModule ) ;
345
+ } ) ;
346
+ }
347
+ } ) ;
348
+ } ) ;
326
349
compilation . plugin ( "additional-assets" , function ( callback ) {
327
350
extractedChunks . forEach ( function ( extractedChunk ) {
328
351
if ( extractedChunk . modules . length ) {
0 commit comments