From 0f684970e99358369e3fa59a13dd1635ff00cd77 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Mon, 1 Jul 2024 10:30:09 +0100 Subject: [PATCH] fix(vite): omit css `?raw` from head when in dev mode (#27940) --- packages/vite/src/manifest.ts | 4 ++-- packages/vite/src/vite-node.ts | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/vite/src/manifest.ts b/packages/vite/src/manifest.ts index 9d4490f36b..33666dde89 100644 --- a/packages/vite/src/manifest.ts +++ b/packages/vite/src/manifest.ts @@ -8,7 +8,7 @@ import { normalizeViteManifest } from 'vue-bundle-renderer' import type { Manifest } from 'vue-bundle-renderer' import type { ViteBuildContext } from './vite' -export async function writeManifest (ctx: ViteBuildContext, css: string[] = []) { +export async function writeManifest (ctx: ViteBuildContext) { // Write client manifest for use in vue-bundle-renderer const clientDist = resolve(ctx.nuxt.options.buildDir, 'dist/client') const serverDist = resolve(ctx.nuxt.options.buildDir, 'dist/server') @@ -17,7 +17,7 @@ export async function writeManifest (ctx: ViteBuildContext, css: string[] = []) '@vite/client': { isEntry: true, file: '@vite/client', - css, + css: [], module: true, resourceType: 'script', }, diff --git a/packages/vite/src/vite-node.ts b/packages/vite/src/vite-node.ts index b4af79e8b0..144fad94a2 100644 --- a/packages/vite/src/vite-node.ts +++ b/packages/vite/src/vite-node.ts @@ -6,6 +6,7 @@ import { isAbsolute, normalize, resolve } from 'pathe' import { addDevServerHandler } from '@nuxt/kit' import { isFileServingAllowed } from 'vite' import type { ModuleNode, Plugin as VitePlugin } from 'vite' +import { getQuery } from 'ufo' import { normalizeViteManifest } from 'vue-bundle-renderer' import { resolve as resolveModule } from 'mlly' import { distDir } from './dirs' @@ -78,13 +79,23 @@ export function registerViteNodeMiddleware (ctx: ViteBuildContext) { } function getManifest (ctx: ViteBuildContext) { - const css = Array.from(ctx.ssrServer!.moduleGraph.urlToModuleMap.keys()) - .filter(i => isCSS(i)) + const css = new Set() + for (const key of ctx.ssrServer!.moduleGraph.urlToModuleMap.keys()) { + if (isCSS(key)) { + const query = getQuery(key) + if ('raw' in query) { continue } + const importers = ctx.ssrServer!.moduleGraph.urlToModuleMap.get(key)?.importers + if (importers && [...importers].every(i => i.id && 'raw' in getQuery(i.id))) { + continue + } + css.add(key) + } + } const manifest = normalizeViteManifest({ '@vite/client': { file: '@vite/client', - css, + css: [...css], module: true, isEntry: true, },