Skip to content

Commit

Permalink
feat(css): build assets with the entry name when it is an entry point (
Browse files Browse the repository at this point in the history
…#11578)

Co-authored-by: sapphi-red <green@sapphi.red>
  • Loading branch information
aleen42 and sapphi-red committed Aug 19, 2023
1 parent fe1c0b9 commit fd9a2cc
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 7 deletions.
10 changes: 6 additions & 4 deletions packages/vite/src/node/plugins/css.ts
Expand Up @@ -622,9 +622,12 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
pureCssChunks.add(chunk)
}
if (opts.format === 'es' || opts.format === 'cjs') {
const cssAssetName = chunk.facadeModuleId
? normalizePath(path.relative(config.root, chunk.facadeModuleId))
: chunk.name
const isEntry = chunk.isEntry && isPureCssChunk
const cssAssetName = normalizePath(
!isEntry && chunk.facadeModuleId
? path.relative(config.root, chunk.facadeModuleId)
: chunk.name,
)

const lang = path.extname(cssAssetName).slice(1)
const cssFileName = ensureFileExt(cssAssetName, '.css')
Expand Down Expand Up @@ -654,7 +657,6 @@ export function cssPostPlugin(config: ResolvedConfig): Plugin {
source: chunkCSS,
})
const originalName = isPreProcessor(lang) ? cssAssetName : cssFileName
const isEntry = chunk.isEntry && isPureCssChunk
generatedAssets
.get(config)!
.set(referenceId, { originalName, isEntry })
Expand Down
Expand Up @@ -37,7 +37,7 @@ describe.runIf(isBuild)('build', () => {
const cssAssetEntry = manifest['global.css']
const scssAssetEntry = manifest['nested/blue.scss']
const imgAssetEntry = manifest['../images/logo.png']
const dirFooAssetEntry = manifest['../../dir/foo.css'] // '\\' should not be used even on windows
const dirFooAssetEntry = manifest['../dynamic/foo.css'] // '\\' should not be used even on windows
expect(htmlEntry.css.length).toEqual(1)
expect(htmlEntry.assets.length).toEqual(1)
expect(cssAssetEntry?.file).not.toBeUndefined()
Expand All @@ -48,6 +48,9 @@ describe.runIf(isBuild)('build', () => {
expect(imgAssetEntry?.file).not.toBeUndefined()
expect(imgAssetEntry?.isEntry).toBeUndefined()
expect(dirFooAssetEntry).not.toBeUndefined()
// use the entry name
expect(manifest['bar.css']).not.toBeUndefined()
expect(manifest['foo.css']).toBeUndefined()
})
})

Expand Down
2 changes: 1 addition & 1 deletion playground/backend-integration/dir/foo.css
@@ -1,3 +1,3 @@
.windows-path-foo {
.entry-name-foo {
color: blue;
}
3 changes: 3 additions & 0 deletions playground/backend-integration/frontend/dynamic/foo.css
@@ -0,0 +1,3 @@
.windows-path-foo {
color: blue;
}
1 change: 1 addition & 0 deletions playground/backend-integration/frontend/dynamic/foo.ts
@@ -0,0 +1 @@
import './foo.css'
@@ -1,4 +1,5 @@
import 'vite/modulepreload-polyfill'
import('../dynamic/foo') // should be dynamic import to split chunks

export const colorClass = 'text-black'

Expand Down
2 changes: 1 addition & 1 deletion playground/backend-integration/vite.config.js
Expand Up @@ -19,7 +19,7 @@ function BackendIntegrationExample() {
.map((filename) => [path.relative(root, filename), filename])

entrypoints.push(['tailwindcss-colors', 'tailwindcss/colors.js'])
entrypoints.push(['foo.css', path.resolve(__dirname, './dir/foo.css')])
entrypoints.push(['bar.css', path.resolve(__dirname, './dir/foo.css')])

return {
build: {
Expand Down

0 comments on commit fd9a2cc

Please sign in to comment.