1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| class Compiler { run(callback) { const finalCallback = (err, stats) => { this.idle = true this.cache.beginIdle() this.idle = true this.running = false if (callback !== undefined) callback(err, stats) this.hooks.afterDone.call(stats) }
const startTime = Date.now() this.running = true
const onCompiled = (err, compilation) => { if (this.hooks.shouldEmit.call(compilation) === false) { compilation.startTime = startTime compilation.endTime = Date.now() const stats = new Stats(compilation) this.hooks.done.callAsync(stats, (err) => { return finalCallback(null, stats) }) return }
process.nextTick(() => { this.emitAssets(compilation, (err) => { if (compilation.hooks.needAdditionalPass.call()) { compilation.needAdditionalPass = true compilation.startTime = startTime compilation.endTime = Date.now() const stats = new Stats(compilation) this.hooks.done.callAsync(stats, (err) => { this.hooks.additionalPass.callAsync((err) => { this.compile(onCompiled) }) }) return }
this.emitRecords((err) => { compilation.startTime = startTime compilation.endTime = Date.now() const stats = new Stats(compilation) this.hooks.done.callAsync(stats, (err) => { this.cache.storeBuildDependencies( compilation.buildDependencies, (err) => { return finalCallback(null, stats) }, ) }) }) }) }) }
const run = () => { this.hooks.beforeRun.callAsync(this, (err) => { this.hooks.run.callAsync(this, (err) => { this.readRecords((err) => { this.compile(onCompiled) }) }) }) } run() }
compile(callback) { const params = this.newCompilationParams() this.hooks.beforeCompile.callAsync(params, (err) => { this.hooks.compile.call(params) const compilation = this.newCompilation(params) this.hooks.make.callAsync(compilation, (err) => { this.hooks.finishMake.callAsync(compilation, (err) => { process.nextTick(() => { compilation.finish((err) => { compilation.seal((err) => { this.hooks.afterCompile.callAsync(compilation, (err) => { return callback(null, compilation) }) }) }) }) }) }) }) } }
|