@@ -223,7 +223,8 @@ export function cssPlugin(config: ResolvedConfig): Plugin {
223
223
const thisModule = moduleGraph . getModuleById ( id )
224
224
if ( thisModule ) {
225
225
// CSS modules cannot self-accept since it exports values
226
- const isSelfAccepting = ! modules && ! inlineRE . test ( id )
226
+ const isSelfAccepting =
227
+ ! modules && ! inlineRE . test ( id ) && ! htmlProxyRE . test ( id )
227
228
if ( deps ) {
228
229
// record deps in the module graph so edits to @import css can trigger
229
230
// main import to hot update
@@ -301,7 +302,6 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
301
302
return
302
303
}
303
304
304
- const isHTMLProxy = htmlProxyRE . test ( id )
305
305
const inlined = inlineRE . test ( id )
306
306
const modules = cssModulesCache . get ( config ) ! . get ( id )
307
307
@@ -314,43 +314,41 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
314
314
dataToEsm ( modules , { namedExports : true , preferConst : true } )
315
315
316
316
if ( config . command === 'serve' ) {
317
- if ( isDirectCSSRequest ( id ) ) {
318
- return css
319
- } else {
320
- // server only
321
- if ( options ?. ssr ) {
322
- return modulesCode || `export default ${ JSON . stringify ( css ) } `
323
- }
324
- if ( inlined ) {
325
- return `export default ${ JSON . stringify ( css ) } `
326
- }
327
-
328
- let cssContent = css
317
+ const getContentWithSourcemap = async ( content : string ) => {
329
318
if ( config . css ?. devSourcemap ) {
330
319
const sourcemap = this . getCombinedSourcemap ( )
331
320
await injectSourcesContent ( sourcemap , cleanUrl ( id ) , config . logger )
332
- cssContent = getCodeWithSourcemap ( 'css' , css , sourcemap )
333
- }
334
-
335
- if ( isHTMLProxy ) {
336
- return cssContent
321
+ return getCodeWithSourcemap ( 'css' , content , sourcemap )
337
322
}
323
+ return content
324
+ }
338
325
339
- return [
340
- `import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from ${ JSON . stringify (
341
- path . posix . join ( config . base , CLIENT_PUBLIC_PATH )
342
- ) } `,
343
- `const __vite__id = ${ JSON . stringify ( id ) } ` ,
344
- `const __vite__css = ${ JSON . stringify ( cssContent ) } ` ,
345
- `__vite__updateStyle(__vite__id, __vite__css)` ,
346
- // css modules exports change on edit so it can't self accept
347
- `${
348
- modulesCode ||
349
- `import.meta.hot.accept()\nexport default __vite__css`
350
- } `,
351
- `import.meta.hot.prune(() => __vite__removeStyle(__vite__id))`
352
- ] . join ( '\n' )
326
+ if ( isDirectCSSRequest ( id ) ) {
327
+ return await getContentWithSourcemap ( css )
328
+ }
329
+ // server only
330
+ if ( options ?. ssr ) {
331
+ return modulesCode || `export default ${ JSON . stringify ( css ) } `
353
332
}
333
+ if ( inlined ) {
334
+ return `export default ${ JSON . stringify ( css ) } `
335
+ }
336
+
337
+ const cssContent = await getContentWithSourcemap ( css )
338
+ return [
339
+ `import { updateStyle as __vite__updateStyle, removeStyle as __vite__removeStyle } from ${ JSON . stringify (
340
+ path . posix . join ( config . base , CLIENT_PUBLIC_PATH )
341
+ ) } `,
342
+ `const __vite__id = ${ JSON . stringify ( id ) } ` ,
343
+ `const __vite__css = ${ JSON . stringify ( cssContent ) } ` ,
344
+ `__vite__updateStyle(__vite__id, __vite__css)` ,
345
+ // css modules exports change on edit so it can't self accept
346
+ `${
347
+ modulesCode ||
348
+ `import.meta.hot.accept()\nexport default __vite__css`
349
+ } `,
350
+ `import.meta.hot.prune(() => __vite__removeStyle(__vite__id))`
351
+ ] . join ( '\n' )
354
352
}
355
353
356
354
// build CSS handling ----------------------------------------------------
@@ -359,6 +357,7 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
359
357
// cache css compile result to map
360
358
// and then use the cache replace inline-style-flag when `generateBundle` in vite:build-html plugin
361
359
const inlineCSS = inlineCSSRE . test ( id )
360
+ const isHTMLProxy = htmlProxyRE . test ( id )
362
361
const query = parseRequest ( id )
363
362
if ( inlineCSS && isHTMLProxy ) {
364
363
addToHTMLProxyTransformResult (
0 commit comments