Skip to content

Commit 6d80065

Browse files
committed
improve ProgressPlugin
1 parent 081ad5d commit 6d80065

File tree

1 file changed

+89
-34
lines changed

1 file changed

+89
-34
lines changed

lib/ProgressPlugin.js

Lines changed: 89 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -136,45 +136,100 @@ 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 => {
188+
const numberOfHooks = Object.keys(hooks).length;
189+
Object.keys(hooks).forEach((name, idx) => {
166190
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]);
191+
const title = hooks[name];
192+
const percentage = idx / numberOfHooks * 0.25 + 0.7;
193+
compilation.hooks[name].intercept({
194+
name: "ProgressPlugin",
195+
context: true,
196+
call: () => {
197+
if(pass++ > 0)
198+
handler(percentage, title, `pass ${pass}`);
199+
else
200+
handler(percentage, title);
201+
},
202+
tap: (context, tap) => {
203+
if(context) {
204+
context.reportProgress = (...args) => {
205+
if(pass > 1)
206+
handler(percentage, title, `pass ${pass}`, tap.name, ...args);
207+
else
208+
handler(percentage, title, tap.name, ...args);
209+
};
210+
}
211+
if(pass > 1)
212+
handler(percentage, title, `pass ${pass}`, tap.name);
213+
else
214+
handler(percentage, title, tap.name);
215+
}
173216
});
174217
});
175218
});
176-
compiler.hooks.emit.tap("ProgressPlugin", () => {
177-
handler(0.95, "emitting");
219+
compiler.hooks.emit.intercept({
220+
name: "ProgressPlugin",
221+
context: true,
222+
call: () => {
223+
handler(0.95, "emitting");
224+
},
225+
tap: (context, tap) => {
226+
if(context) {
227+
context.reportProgress = (...args) => {
228+
handler(0.95, "emitting", tap.name, ...args);
229+
};
230+
}
231+
handler(0.95, "emitting", tap.name);
232+
}
178233
});
179234
compiler.hooks.done.tap("ProgressPlugin", () => {
180235
handler(1, "");

0 commit comments

Comments
 (0)