@@ -136,45 +136,92 @@ class ProgressPlugin {
136136 compilation . hooks . failedModule . tap ( "ProgressPlugin" , moduleDone ) ;
137137 compilation . hooks . succeedModule . tap ( "ProgressPlugin" , moduleDone ) ;
138138 const hooks = {
139- "seal" : [ 0.71 , "sealing" ] ,
140- "optimize" : [ 0.72 , "optimizing" ] ,
141- "optimizeModulesBasic" : [ 0.73 , "basic module optimization" ] ,
142- "optimizeModules" : [ 0.74 , "module optimization" ] ,
143- "optimizeModulesAdvanced" : [ 0.75 , "advanced module optimization" ] ,
144- "optimizeChunksBasic" : [ 0.76 , "basic chunk optimization" ] ,
145- "optimizeChunks" : [ 0.77 , "chunk optimization" ] ,
146- "optimizeChunksAdvanced" : [ 0.78 , "advanced chunk optimization" ] ,
147- "optimizeTree" : [ 0.79 , "module and chunk tree optimization" ] ,
148- "optimizeChunkModules" : [ 0.80 , "chunk modules optimization" ] ,
149- "optimizeChunkModulesAdvanced" : [ 0.81 , "advanced chunk modules optimization" ] ,
150- "reviveModules" : [ 0.82 , "module reviving" ] ,
151- "optimizeModuleOrder" : [ 0.83 , "module order optimization" ] ,
152- "optimizeModuleIds" : [ 0.84 , "module id optimization" ] ,
153- "reviveChunks" : [ 0.85 , "chunk reviving" ] ,
154- "optimizeChunkOrder" : [ 0.86 , "chunk order optimization" ] ,
155- "optimizeChunkIds" : [ 0.87 , "chunk id optimization" ] ,
156- "beforeHash" : [ 0.88 , "hashing" ] ,
157- "beforeModuleAssets" : [ 0.89 , "module assets processing" ] ,
158- "beforeChunkAssets" : [ 0.90 , "chunk assets processing" ] ,
159- "additionalChunkAssets" : [ 0.91 , "additional chunk assets processing" ] ,
160- "additionalAssets" : [ 0.91 , "additional asset processing" ] ,
161- "optimizeChunkAssets" : [ 0.92 , "chunk asset optimization" ] ,
162- "optimizeAssets" : [ 0.94 , "asset optimization" ] ,
163- "record" : [ 0.92 , "recording" ]
139+ finishModules : "finish module graph" ,
140+ seal : "sealing" ,
141+ optimizeDependenciesBasic : "basic dependencies optimization" ,
142+ optimizeDependencies : "dependencies optimization" ,
143+ optimizeDependenciesAdvanced : "advanced dependencies optimization" ,
144+ afterOptimizeDependencies : "after dependencies optimization" ,
145+ optimize : "optimizing" ,
146+ optimizeModulesBasic : "basic module optimization" ,
147+ optimizeModules : "module optimization" ,
148+ optimizeModulesAdvanced : "advanced module optimization" ,
149+ afterOptimizeModules : "after module optimization" ,
150+ optimizeChunksBasic : "basic chunk optimization" ,
151+ optimizeChunks : "chunk optimization" ,
152+ optimizeChunksAdvanced : "advanced chunk optimization" ,
153+ afterOptimizeChunks : "after chunk optimization" ,
154+ optimizeTree : "module and chunk tree optimization" ,
155+ afterOptimizeTree : "after module and chunk tree optimization" ,
156+ optimizeChunkModulesBasic : "basic chunk modules optimization" ,
157+ optimizeChunkModules : "chunk modules optimization" ,
158+ optimizeChunkModulesAdvanced : "advanced chunk modules optimization" ,
159+ afterOptimizeChunkModules : "after chunk modules optimization" ,
160+ reviveModules : "module reviving" ,
161+ optimizeModuleOrder : "module order optimization" ,
162+ advancedOptimizeModuleOrder : "advanced module order optimization" ,
163+ beforeModuleIds : "before module ids" ,
164+ moduleIds : "module ids" ,
165+ optimizeModuleIds : "module id optimization" ,
166+ afterOptimizeModuleIds : "module id optimization" ,
167+ reviveChunks : "chunk reviving" ,
168+ optimizeChunkOrder : "chunk order optimization" ,
169+ beforeChunkIds : "before chunk ids" ,
170+ optimizeChunkIds : "chunk id optimization" ,
171+ afterOptimizeChunkIds : "after chunk id optimization" ,
172+ recordModules : "record modules" ,
173+ recordChunks : "record chunks" ,
174+ beforeHash : "hashing" ,
175+ afterHash : "after hashing" ,
176+ recordHash : "record hash" ,
177+ beforeModuleAssets : "module assets processing" ,
178+ beforeChunkAssets : "chunk assets processing" ,
179+ additionalChunkAssets : "additional chunk assets processing" ,
180+ record : "recording" ,
181+ additionalAssets : "additional asset processing" ,
182+ optimizeChunkAssets : "chunk asset optimization" ,
183+ afterOptimizeChunkAssets : "after chunk asset optimization" ,
184+ optimizeAssets : "asset optimization" ,
185+ afterOptimizeAssets : "after asset optimization" ,
186+ afterSeal : "after seal"
164187 } ;
165- Object . keys ( hooks ) . forEach ( name => {
166- let pass = 0 ;
167- const settings = hooks [ name ] ;
168- compilation . hooks [ name ] . tap ( "ProgressPlugin" , ( ) => {
169- if ( pass ++ > 0 )
170- handler ( settings [ 0 ] , settings [ 1 ] , `pass ${ pass } ` ) ;
171- else
172- handler ( settings [ 0 ] , settings [ 1 ] ) ;
188+ const numberOfHooks = Object . keys ( hooks ) . length ;
189+ Object . keys ( hooks ) . forEach ( ( name , idx ) => {
190+ const title = hooks [ name ] ;
191+ const percentage = idx / numberOfHooks * 0.25 + 0.7 ;
192+ compilation . hooks [ name ] . intercept ( {
193+ name : "ProgressPlugin" ,
194+ context : true ,
195+ call : ( ) => {
196+ handler ( percentage , title ) ;
197+ } ,
198+ tap : ( context , tap ) => {
199+ if ( context ) {
200+ // p is percentage from 0 to 1
201+ // args is any number of messages in a hierarchical matter
202+ context . reportProgress = ( p , ...args ) => {
203+ handler ( percentage , title , tap . name , ...args ) ;
204+ } ;
205+ }
206+ handler ( percentage , title , tap . name ) ;
207+ }
173208 } ) ;
174209 } ) ;
175210 } ) ;
176- compiler . hooks . emit . tap ( "ProgressPlugin" , ( ) => {
177- handler ( 0.95 , "emitting" ) ;
211+ compiler . hooks . emit . intercept ( {
212+ name : "ProgressPlugin" ,
213+ context : true ,
214+ call : ( ) => {
215+ handler ( 0.95 , "emitting" ) ;
216+ } ,
217+ tap : ( context , tap ) => {
218+ if ( context ) {
219+ context . reportProgress = ( p , ...args ) => {
220+ handler ( 0.95 , "emitting" , tap . name , ...args ) ;
221+ } ;
222+ }
223+ handler ( 0.95 , "emitting" , tap . name ) ;
224+ }
178225 } ) ;
179226 compiler . hooks . done . tap ( "ProgressPlugin" , ( ) => {
180227 handler ( 1 , "" ) ;
0 commit comments