@@ -14,6 +14,7 @@ var Module = require("./Module");
1414var ArrayMap = require ( "./ArrayMap" ) ;
1515var Chunk = require ( "./Chunk" ) ;
1616var Stats = require ( "./Stats" ) ;
17+ var Template = require ( "./Template" ) ;
1718
1819function Compilation ( compiler ) {
1920 Tapable . call ( this ) ;
@@ -77,6 +78,10 @@ Compilation.prototype.getModule = function(module) {
7778 return this . _modules [ identifier ] ;
7879} ;
7980
81+ Compilation . prototype . findModule = function ( identifier ) {
82+ return this . _modules [ identifier ] ;
83+ } ;
84+
8085Compilation . prototype . buildModule = function ( module , callback ) {
8186 this . applyPlugins ( "build-module" , module ) ;
8287 module . build ( this . options , this , this . resolvers . normal , this . inputFileSystem , function ( err ) {
@@ -278,6 +283,7 @@ Compilation.prototype.seal = function seal(callback) {
278283 this . summarizeDependencies ( ) ;
279284 this . applyPluginsAsync ( "optimize-chunk-assets" , this . chunks , function ( err ) {
280285 if ( err ) return callback ( err ) ;
286+ this . applyPlugins ( "after-optimize-chunk-assets" , this . chunks ) ;
281287 this . applyPluginsAsync ( "optimize-assets" , this . assets , function ( err ) {
282288 if ( err ) return callback ( err ) ;
283289 this . applyPlugins ( "after-optimize-assets" , this . assets ) ;
@@ -457,13 +463,10 @@ Compilation.prototype.summarizeDependencies = function summarizeDependencies() {
457463 this . contextDependencies = filterDups ( this . contextDependencies ) ;
458464} ;
459465
460- var REGEXP_ID = / \[ i d \] / g;
461- var REGEXP_NAME = / \[ n a m e \] / g;
462- var REGEXP_HASH = / \[ h a s h \] / g;
463466Compilation . prototype . createChunkAssets = function createChunkAssets ( ) {
464467 var outputOptions = this . outputOptions || { } ;
465468 var filename = outputOptions . filename || "bundle.js" ;
466- var chunkFilename = outputOptions . chunkFilename || "[id]." + filename . replace ( REGEXP_NAME , "" ) ;
469+ var chunkFilename = outputOptions . chunkFilename || "[id]." + filename . replace ( Template . REGEXP_NAME , "" ) ;
467470 var namedChunkFilename = outputOptions . namedChunkFilename || null ;
468471 var hash = new ( require ( "crypto" ) . Hash ) ( "md5" ) ;
469472 this . mainTemplate . updateHash ( hash ) ;
@@ -479,7 +482,9 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
479482 var module = this . modules [ i ] ;
480483 if ( module . assets ) {
481484 Object . keys ( module . assets ) . forEach ( function ( name ) {
482- this . assets [ name . replace ( REGEXP_HASH , hash ) ] = module . assets [ name ] ;
485+ var file = name . replace ( Template . REGEXP_HASH , hash ) ;
486+ this . assets [ file ] = module . assets [ name ] ;
487+ this . applyPlugins ( "module-asset" , module , file ) ;
483488 } , this ) ;
484489 }
485490 }
@@ -490,15 +495,32 @@ Compilation.prototype.createChunkAssets = function createChunkAssets() {
490495 var file ;
491496 if ( chunk . entry ) {
492497 source = this . mainTemplate . render ( hash , chunk , this . moduleTemplate , this . dependencyTemplates ) ;
493- this . assets [ file = filename . replace ( REGEXP_HASH , hash ) . replace ( REGEXP_ID , chunk . id ) . replace ( REGEXP_NAME , chunk . name || "" ) ] = source ;
498+ this . assets [
499+ file = filename
500+ . replace ( Template . REGEXP_HASH , hash )
501+ . replace ( Template . REGEXP_ID , chunk . id )
502+ . replace ( Template . REGEXP_NAME , chunk . name || "" )
503+ ] = source ;
494504 chunk . files . push ( file ) ;
505+ this . applyPlugins ( "chunk-asset" , chunk , file ) ;
495506 } else {
496507 source = this . chunkTemplate . render ( chunk , this . moduleTemplate , this . dependencyTemplates ) ;
497- this . assets [ file = chunkFilename . replace ( REGEXP_HASH , hash ) . replace ( REGEXP_ID , chunk . id ) ] = source ;
508+ this . assets [
509+ file = chunkFilename
510+ . replace ( Template . REGEXP_HASH , hash )
511+ . replace ( Template . REGEXP_ID , chunk . id )
512+ ] = source ;
498513 chunk . files . push ( file ) ;
514+ this . applyPlugins ( "chunk-asset" , chunk , file ) ;
499515 if ( namedChunkFilename && chunk . name ) {
500- this . assets [ file = namedChunkFilename . replace ( REGEXP_HASH , hash ) . replace ( REGEXP_ID , chunk . id ) . replace ( REGEXP_NAME , chunk . name || "" ) ] = source ;
516+ this . assets [
517+ file = namedChunkFilename
518+ . replace ( Template . REGEXP_HASH , hash )
519+ . replace ( Template . REGEXP_ID , chunk . id )
520+ . replace ( Template . REGEXP_NAME , chunk . name || "" )
521+ ] = source ;
501522 chunk . files . push ( file ) ;
523+ this . applyPlugins ( "chunk-asset" , chunk , file ) ;
502524 }
503525 }
504526 }
0 commit comments