From e271695d716247455ca620948f814e6c8ca0e3c4 Mon Sep 17 00:00:00 2001
From: Divyansh Singh <40380293+brc-dd@users.noreply.github.com>
Date: Thu, 27 Feb 2025 15:11:08 +0530
Subject: [PATCH] fix: hmr not working for watched files in path loaders
follow up on #4525
---
src/node/plugin.ts | 3 ++-
src/node/plugins/dynamicRoutesPlugin.ts | 9 ++++++++-
src/node/plugins/staticDataPlugin.ts | 2 +-
3 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/src/node/plugin.ts b/src/node/plugin.ts
index 498f4c9f..219c18b6 100644
--- a/src/node/plugin.ts
+++ b/src/node/plugin.ts
@@ -307,7 +307,8 @@ export async function createVitePressPlugin(
if (url?.endsWith('.html')) {
res.statusCode = 200
res.setHeader('Content-Type', 'text/html')
- let html = `
+ let html = `\
+
diff --git a/src/node/plugins/dynamicRoutesPlugin.ts b/src/node/plugins/dynamicRoutesPlugin.ts
index 3be663c7..eca63a0c 100644
--- a/src/node/plugins/dynamicRoutesPlugin.ts
+++ b/src/node/plugins/dynamicRoutesPlugin.ts
@@ -187,10 +187,17 @@ export const dynamicRoutesPlugin = async (
// Also check if the file matches any custom watch patterns.
let watchedFileChanged = false
- for (const [, route] of routeModuleCache) {
+ for (const [file, route] of routeModuleCache) {
if (route.watch && isMatch(normalizedFile, route.watch)) {
route.routes = undefined
watchedFileChanged = true
+
+ for (const id of moduleGraph.delete(file)) {
+ const mod = this.environment.moduleGraph.getModuleById(id)
+ if (mod) {
+ modules.push(mod)
+ }
+ }
}
}
diff --git a/src/node/plugins/staticDataPlugin.ts b/src/node/plugins/staticDataPlugin.ts
index 8521603d..b0a7752b 100644
--- a/src/node/plugins/staticDataPlugin.ts
+++ b/src/node/plugins/staticDataPlugin.ts
@@ -150,7 +150,7 @@ export const staticDataPlugin: Plugin = {
const loader = idToLoaderModulesMap[id]
if (loader && loader.watch && isMatch(normalizedFile, loader.watch)) {
const mod = this.environment.moduleGraph.getModuleById(id)
- if (mod && !modules.includes(mod)) {
+ if (mod) {
modules.push(mod)
}
}