module.exports = class TimeFixPlugin {
|
constructor(watchOffset = 11000) {
|
this.watchOffset = watchOffset
|
}
|
|
apply(compiler) {
|
const context = this
|
const watch = compiler.watch
|
let watching
|
let fixed
|
|
// Modify the time for first run
|
compiler.watch = function () {
|
watching = watch.apply(this, arguments)
|
watching.startTime += context.watchOffset
|
return watching
|
}
|
|
// Modify the time for subsequent runs
|
compiler.hooks.watchRun.tap('time-fix-plugin', () => {
|
if (watching && !fixed) {
|
watching.startTime += this.watchOffset
|
}
|
})
|
|
// Reset time
|
compiler.hooks.done.tap('time-fix-plugin', stats => {
|
if (watching && !fixed) {
|
// webpack 5: #3
|
if (stats.compilation.startTime) {
|
stats.compilation.startTime -= this.watchOffset
|
} else {
|
stats.startTime -= this.watchOffset
|
}
|
fixed = true
|
}
|
})
|
}
|
}
|