diff --git a/packages/plugin-rsc/src/plugin.ts b/packages/plugin-rsc/src/plugin.ts index bf7202e9..c3da4dfa 100644 --- a/packages/plugin-rsc/src/plugin.ts +++ b/packages/plugin-rsc/src/plugin.ts @@ -1147,8 +1147,12 @@ import.meta.hot.on("rsc:update", () => { const nodes = document.querySelectorAll( "link[rel='stylesheet']", ) + // normalize paths with ?direct suffix for comparison + // TODO: we also have SSR CSS without ?direct + // TODO: test virtual css? + const prunePaths = e.paths.flatMap((p) => [p, p + '?direct']) nodes.forEach((node) => { - if (e.paths.includes(node.dataset.rscCssHref!)) { + if (prunePaths.includes(node.dataset.rscCssHref!)) { node.remove() } }) @@ -2260,7 +2264,10 @@ function vitePluginRscCss( for (const file of [importer, ...result.visitedFiles]) { this.addWatchFile(file) } - const cssHrefs = result.hrefs.map((href) => href.slice(1)) + const cssHrefs = result.hrefs.map((href) => { + const url = href.slice(1) + return url.includes('?') ? url + '&direct' : url + '?direct' + }) const deps = assetsURLOfDeps({ css: cssHrefs, js: [] }, manager) return generateResourcesCode( serializeValueWithRuntime(deps),