From 857f7f9708e40317f91f40c3cabaea6e0826588b Mon Sep 17 00:00:00 2001 From: Jah-yee Date: Wed, 22 Apr 2026 05:18:10 +0800 Subject: [PATCH] fix(css): pass filename to esbuild and lightningcss for better minification warnings When CSS minification produces warnings, the filename was showing as '' which made it difficult to track down which file had the issue. This change passes the actual filename to esbuild's 'sourcefile' option and to lightningcss, so that warning messages now contain the correct filename instead of ''. Fixes #15915 --- packages/vite/src/node/plugins/css.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/vite/src/node/plugins/css.ts b/packages/vite/src/node/plugins/css.ts index 596caaef46e28f..9d759b534bd538 100644 --- a/packages/vite/src/node/plugins/css.ts +++ b/packages/vite/src/node/plugins/css.ts @@ -622,7 +622,7 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin { } else if (inlined) { let content = css if (config.build.cssMinify) { - content = await minifyCSS(content, config, true) + content = await minifyCSS(content, config, true, id) } code = `export default ${JSON.stringify(content)}` } else { @@ -2202,6 +2202,7 @@ async function minifyCSS( css: string, config: ResolvedConfig, inlined: boolean, + filename: string = defaultCssBundleName, ) { // We want inlined CSS to not end with a linebreak, while ensuring that // regular CSS assets do end with a linebreak. @@ -2213,6 +2214,7 @@ async function minifyCSS( const { code, warnings } = await transform(css, { loader: 'css', target: config.build.cssTarget || undefined, + sourcefile: filename, ...resolveMinifyCssEsbuildOptions(config.esbuild || {}), }) if (warnings.length) { @@ -2239,9 +2241,7 @@ async function minifyCSS( ...config.css.lightningcss, targets: convertTargets(config.build.cssTarget), cssModules: undefined, - // TODO: Pass actual filename here, which can also be passed to esbuild's - // `sourcefile` option below to improve error messages - filename: defaultCssBundleName, + filename, code: Buffer.from(css), minify: true, })