Visitar URL original
fix(css): don't pass empty targets to lightningcss (#23295) · vitejs/vite@2804636 · GitHub
Skip to content

Commit 2804636

Browse files
lazergsapphi-red
andauthored
fix(css): don't pass empty targets to lightningcss (#23295)
Co-authored-by: sapphi-red <green@sapphi.red>
1 parent 599b44b commit 2804636

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

‎packages/vite/src/node/__tests__/plugins/css.spec.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,15 @@ describe('convertTargets', () => {
280280
test('supports es6 as an alias of es2015', () => {
281281
expect(convertTargets('es6')).toStrictEqual(convertTargets('es2015'))
282282
})
283+
284+
test('returns undefined when there is no constraint', () => {
285+
expect(convertTargets('esnext')).toBeUndefined()
286+
expect(convertTargets(['esnext'])).toBeUndefined()
287+
expect(convertTargets(false)).toBeUndefined()
288+
expect(convertTargets(['esnext', 'chrome148'])).toStrictEqual({
289+
chrome: 0x94_00_00,
290+
})
291+
})
283292
})
284293

285294
describe('getEmptyChunkReplacer', () => {

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3616,9 +3616,10 @@ const convertTargetsCache = new Map<
36163616
export const convertTargets = (
36173617
esbuildTarget: string | string[] | false,
36183618
): LightningCSSOptions['targets'] => {
3619-
if (!esbuildTarget) return {}
3620-
const cached = convertTargetsCache.get(esbuildTarget)
3621-
if (cached) return cached
3619+
if (!esbuildTarget) return undefined
3620+
if (convertTargetsCache.has(esbuildTarget)) {
3621+
return convertTargetsCache.get(esbuildTarget)
3622+
}
36223623
const targets: LightningCSSOptions['targets'] = {}
36233624

36243625
const entriesWithoutES = arraify(esbuildTarget).flatMap((e) => {
@@ -3652,8 +3653,10 @@ export const convertTargets = (
36523653
throw new Error(`Unsupported target "${entry}"`)
36533654
}
36543655

3655-
convertTargetsCache.set(esbuildTarget, targets)
3656-
return targets
3656+
// an empty object means "no browser supports anything" to lightningcss
3657+
const result = Object.keys(targets).length > 0 ? targets : undefined
3658+
convertTargetsCache.set(esbuildTarget, result)
3659+
return result
36573660
}
36583661

36593662
export function resolveLibCssFilename(

0 commit comments

Comments
 (0)