Skip to content

Commit 1465b20

Browse files
authored
fix(css): include .css?url in assets field of manifest (#17623)
1 parent c4a2227 commit 1465b20

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -711,8 +711,10 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
711711
.get(config)!
712712
.set(referenceId, { originalName: originalFilename })
713713

714+
const filename = this.getFileName(referenceId)
715+
chunk.viteMetadata!.importedAssets.add(cleanUrl(filename))
714716
const replacement = toOutputFilePathInJS(
715-
this.getFileName(referenceId),
717+
filename,
716718
'asset',
717719
chunk.fileName,
718720
'js',

playground/backend-integration/__tests__/backend-integration.spec.ts

+5
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ describe.runIf(isBuild)('build', () => {
3636
test('manifest', async () => {
3737
const manifest = readManifest('dev')
3838
const htmlEntry = manifest['index.html']
39+
const mainTsEntry = manifest['main.ts']
3940
const cssAssetEntry = manifest['global.css']
4041
const pcssAssetEntry = manifest['foo.pcss']
4142
const scssAssetEntry = manifest['nested/blue.scss']
@@ -44,6 +45,10 @@ describe.runIf(isBuild)('build', () => {
4445
const iconEntrypointEntry = manifest['icon.png']
4546
expect(htmlEntry.css.length).toEqual(1)
4647
expect(htmlEntry.assets.length).toEqual(1)
48+
expect(mainTsEntry.assets?.length ?? 0).toBeGreaterThanOrEqual(1)
49+
expect(mainTsEntry.assets).toContainEqual(
50+
expect.stringMatching(/assets\/url-[-\w]{8}\.css/),
51+
)
4752
expect(cssAssetEntry?.file).not.toBeUndefined()
4853
expect(cssAssetEntry?.isEntry).toEqual(true)
4954
expect(pcssAssetEntry?.file).not.toBeUndefined()

playground/backend-integration/frontend/entrypoints/main.ts

+6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
import 'vite/modulepreload-polyfill'
2+
import cssUrl from '../styles/url.css?url'
3+
4+
const cssLink = document.createElement('link')
5+
cssLink.rel = 'stylesheet'
6+
cssLink.href = cssUrl
7+
document.querySelector('head').prepend(cssLink)
28

39
export const colorClass = 'text-black'
410

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
.url {
2+
color: red;
3+
}

0 commit comments

Comments
 (0)