1
0
Fork 0
mirror of https://github.com/terribleplan/next.js.git synced 2024-01-19 02:48:18 +00:00
next.js/packages/next/build/webpack/plugins/nextjs-require-cache-hot-reloader.js
Tim Neutkens b1c4f3aec4
Monorepo (#5341)
- Implements Lerna
- Moves all source code into `packages/next`
- Keeps integration tests in the root directory
2018-10-01 01:02:10 +02:00

33 lines
849 B
JavaScript

// @flow
function deleteCache (path: string) {
delete require.cache[path]
}
// This plugin flushes require.cache after emitting the files. Providing 'hot reloading' of server files.
export default class ChunkNamesPlugin {
prevAssets: null | {[string]: {existsAt: string}}
constructor () {
this.prevAssets = null
}
apply (compiler: any) {
compiler.hooks.afterEmit.tapAsync('NextJsRequireCacheHotReloader', (compilation, callback) => {
const { assets } = compilation
if (this.prevAssets) {
for (const f of Object.keys(assets)) {
deleteCache(assets[f].existsAt)
}
for (const f of Object.keys(this.prevAssets)) {
if (!assets[f]) {
deleteCache(this.prevAssets[f].existsAt)
}
}
}
this.prevAssets = assets
callback()
})
}
}