vike
Version:
The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.
36 lines (35 loc) • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pluginWorkaroundVite6HmrRegression = pluginWorkaroundVite6HmrRegression;
// https://vite.dev/guide/migration (will be 404 after vite@7 release) > search for `hmrReload()`
// https://v6.vite.dev/guide/migration (will exist after vite@7 release) > search for `hmrReload()`
// Workaround seems to work for docs page /banner (which is HTML-only)
// But doesn't seem to work for /examples/render-modes/ (see https://github.com/vikejs/vike/pull/2069 commit `renable HMR test for HTML-only`)
function pluginWorkaroundVite6HmrRegression() {
return {
name: 'vike:pluginWorkaroundVite6HmrRegression',
enforce: 'post',
hotUpdate: {
order: 'post',
handler({ modules, server, timestamp }) {
if (this.environment.name !== 'ssr')
return;
let hasSsrOnlyModules = false;
const invalidatedModules = new Set();
for (const mod of modules) {
if (mod.id == null)
continue;
const clientModule = server.environments.client.moduleGraph.getModuleById(mod.id);
if (clientModule != null)
continue;
this.environment.moduleGraph.invalidateModule(mod, invalidatedModules, timestamp, true);
hasSsrOnlyModules = true;
}
if (hasSsrOnlyModules) {
server.ws.send({ type: 'full-reload' });
return [];
}
},
},
};
}