Some checks failed
CI / go (push) Waiting to run
CI / docker (push) Waiting to run
CI / lint-go (push) Waiting to run
CI / lint-docs (push) Waiting to run
CI / check-paperclip (push) Waiting to run
Deploy static site / Deploy to GitHub Pages (push) Has been cancelled
Deploy static site / Deploy via Docker to hatch.surf (push) Has been cancelled
Resolved conflicts by taking GitHub versions for: - .dockerignore, .gitignore, Dockerfile, README.md, docker-compose.yml Kept deploy.sh updated to: - Pull from GitHub (primary source) - Push to Gitea (push-mirror) - Build from site/ directory (GitHub structure) Co-Authored-By: Paperclip <noreply@paperclip.ing>
39 lines
1.6 KiB
JavaScript
39 lines
1.6 KiB
JavaScript
import { deleteCache } from '../../../server/dev/require-cache';
|
|
import { clearModuleContext } from '../../../server/web/sandbox';
|
|
import path from 'path';
|
|
const RUNTIME_NAMES = [
|
|
'webpack-runtime',
|
|
'webpack-api-runtime'
|
|
];
|
|
const PLUGIN_NAME = 'NextJsRequireCacheHotReloader';
|
|
// This plugin flushes require.cache after emitting the files. Providing 'hot reloading' of server files.
|
|
export class NextJsRequireCacheHotReloader {
|
|
constructor(opts){
|
|
this.prevAssets = null;
|
|
this.serverComponents = opts.serverComponents;
|
|
}
|
|
apply(compiler) {
|
|
compiler.hooks.assetEmitted.tap(PLUGIN_NAME, (_file, { targetPath })=>{
|
|
// Clear module context in this process
|
|
clearModuleContext(targetPath);
|
|
deleteCache([
|
|
targetPath
|
|
]);
|
|
});
|
|
compiler.hooks.afterEmit.tapPromise(PLUGIN_NAME, async (compilation)=>{
|
|
// we need to make sure to clear all server entries from cache
|
|
// since they can have a stale webpack-runtime cache
|
|
// which needs to always be in-sync
|
|
const outputPath = compilation.outputOptions.path;
|
|
const allPaths = RUNTIME_NAMES.map((name)=>path.join(outputPath, `${name}.js`));
|
|
for (const entry of compilation.entrypoints.keys()){
|
|
if (entry.startsWith('pages/') || entry.startsWith('app/')) {
|
|
allPaths.push(path.join(outputPath, `${entry}.js`));
|
|
}
|
|
}
|
|
deleteCache(allPaths);
|
|
});
|
|
}
|
|
}
|
|
|
|
//# sourceMappingURL=nextjs-require-cache-hot-reloader.js.map
|