Skip to content

Commit 45b9273

Browse files
authored
fix(css): include inline css module in bundle (#7591)
1 parent cf59005 commit 45b9273

File tree

5 files changed

+28
-7
lines changed

5 files changed

+28
-7
lines changed

packages/playground/css/__tests__/css.spec.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,11 @@ test('css modules w/ sass', async () => {
242242
await untilUpdated(() => getColor(imported), 'blue')
243243
})
244244

245+
test('inline css modules', async () => {
246+
const css = await page.textContent('.modules-inline')
247+
expect(css).toMatch(/\.inline-module__apply-color-inline___[\w-]{5}/)
248+
})
249+
245250
test('@import dependency w/ style entry', async () => {
246251
expect(await getColor('.css-dep')).toBe('purple')
247252
})

packages/playground/css/index.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,9 @@ <h1>CSS</h1>
8989
</p>
9090
<pre class="path-resolved-modules-code"></pre>
9191

92+
<p>Inline CSS module:</p>
93+
<pre class="modules-inline"></pre>
94+
9295
<p class="css-dep">
9396
@import dependency w/ style enrtrypoints: this should be purple
9497
</p>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.apply-color-inline {
2+
color: turquoise;
3+
}

packages/playground/css/main.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ text(
3838
JSON.stringify(composesPathResolvingMod, null, 2)
3939
)
4040

41+
import inlineMod from './inline.module.css?inline'
42+
text('.modules-inline', inlineMod)
43+
4144
import './dep.css'
4245
import './glob-dep.css'
4346

packages/vite/src/node/plugins/css.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -358,14 +358,21 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
358358
styles.set(id, css)
359359
}
360360

361+
let code: string
362+
if (usedRE.test(id)) {
363+
if (inlined) {
364+
code = `export default ${JSON.stringify(
365+
await minifyCSS(css, config)
366+
)}`
367+
} else {
368+
code = modulesCode || `export default ${JSON.stringify(css)}`
369+
}
370+
} else {
371+
code = `export default ''`
372+
}
373+
361374
return {
362-
code:
363-
modulesCode ||
364-
(usedRE.test(id)
365-
? `export default ${JSON.stringify(
366-
inlined ? await minifyCSS(css, config) : css
367-
)}`
368-
: `export default ''`),
375+
code,
369376
map: { mappings: '' },
370377
// avoid the css module from being tree-shaken so that we can retrieve
371378
// it in renderChunk()

0 commit comments

Comments
 (0)