diff --git a/lib/Compilation.js b/lib/Compilation.js index 386e2f31a..514a4db11 100644 --- a/lib/Compilation.js +++ b/lib/Compilation.js @@ -238,8 +238,8 @@ class Compilation extends Tapable { "module" ]), - /** @type {SyncHook} */ - finishModules: new SyncHook(["modules"]), + /** @type {AsyncSeriesHook} */ + finishModules: new AsyncSeriesHook(["modules"]), /** @type {SyncHook} */ finishRebuildingModule: new SyncHook(["module"]), /** @type {SyncHook} */ @@ -1158,14 +1158,18 @@ class Compilation extends Tapable { }); } - finish() { + finish(callback) { const modules = this.modules; - this.hooks.finishModules.call(modules); + this.hooks.finishModules.callAsync(modules, err => { + if (err) return callback(err); - for (let index = 0; index < modules.length; index++) { - const module = modules[index]; - this.reportDependencyErrorsAndWarnings(module, [module]); - } + for (let index = 0; index < modules.length; index++) { + const module = modules[index]; + this.reportDependencyErrorsAndWarnings(module, [module]); + } + + callback(); + }); } unseal() { diff --git a/lib/Compiler.js b/lib/Compiler.js index decde5945..241218921 100644 --- a/lib/Compiler.js +++ b/lib/Compiler.js @@ -619,15 +619,17 @@ class Compiler extends Tapable { this.hooks.make.callAsync(compilation, err => { if (err) return callback(err); - compilation.finish(); - - compilation.seal(err => { + compilation.finish(err => { if (err) return callback(err); - this.hooks.afterCompile.callAsync(compilation, err => { + compilation.seal(err => { if (err) return callback(err); - return callback(null, compilation); + this.hooks.afterCompile.callAsync(compilation, err => { + if (err) return callback(err); + + return callback(null, compilation); + }); }); }); });