From 4e71c9ff603996b8ac2b68589bcba7d9257a2c0d Mon Sep 17 00:00:00 2001 From: Katja Lutz Date: Sat, 27 Jun 2026 20:44:29 +0200 Subject: [PATCH] fix: remove flaky route treeshake cache --- .changeset/silent-laws-study.md | 5 ++ .../start/src/config/fs-routes/tree-shake.ts | 49 +------------------ 2 files changed, 6 insertions(+), 48 deletions(-) create mode 100644 .changeset/silent-laws-study.md diff --git a/.changeset/silent-laws-study.md b/.changeset/silent-laws-study.md new file mode 100644 index 000000000..24a5ad91b --- /dev/null +++ b/.changeset/silent-laws-study.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +Fixed tailwind class changes not getting applied via HMR in filesystem routes. diff --git a/packages/start/src/config/fs-routes/tree-shake.ts b/packages/start/src/config/fs-routes/tree-shake.ts index 5e69f6eb0..ad91affe1 100644 --- a/packages/start/src/config/fs-routes/tree-shake.ts +++ b/packages/start/src/config/fs-routes/tree-shake.ts @@ -6,7 +6,7 @@ import type * as Babel from "@babel/core"; import type { NodePath, PluginObj, PluginPass } from "@babel/core"; import type { Binding } from "@babel/traverse"; import { basename } from "pathe"; -import type { Plugin, ResolvedConfig, ViteDevServer } from "vite"; +import type { Plugin } from "vite"; type State = Omit & { opts: { pick: string[] }; @@ -280,10 +280,6 @@ function treeShakeTransform({ types: t }: typeof Babel): PluginObj { } export function treeShake(): Plugin { - let config: ResolvedConfig; - const cache: Record = {}; - let server: ViteDevServer; - async function transform(id: string, code: string) { const [path, queryString] = id.split("?"); const query = new URLSearchParams(queryString); @@ -308,46 +304,6 @@ export function treeShake(): Plugin { return { name: "tree-shake", enforce: "pre", - configResolved(resolvedConfig) { - config = resolvedConfig; - }, - configureServer(s) { - server = s; - }, - async handleHotUpdate(ctx) { - if (cache[ctx.file]) { - const mods = []; - const newCode = await ctx.read(); - for (const [id, code] of Object.entries(cache[ctx.file])) { - const transformed = await transform(id, newCode); - if (!transformed) continue; - - const { code: transformedCode } = transformed; - - if (transformedCode !== code) { - const mod = server.moduleGraph.getModuleById(id); - if (mod) mods.push(mod); - } - - cache[ctx.file] ??= {}; - cache[ctx.file][id] = transformedCode; - // server.moduleGraph.setModuleSource(id, code); - } - - return mods; - } - // const mods = []; - // [...server.moduleGraph.urlToModuleMap.entries()].forEach(([url, m]) => { - // if (m.file === ctx.file && m.id.includes("pick=")) { - // if (!m.id.includes("pick=loader")) { - // mods.push(m); - // } - // } - // }); - // return mods; - // // this.router.updateRoute(ctx.path); - // } - }, async transform(code, id) { const [path, queryString] = id.split("?"); if (!path) return; @@ -358,9 +314,6 @@ export function treeShake(): Plugin { const transformed = await transform(id, code); if (!transformed?.code) return; - cache[path] ??= {}; - cache[path][id] = transformed.code; - return { code: transformed.code, map: transformed.map,