Skip to content

Commit

Permalink
update cssMinifier API
Browse files Browse the repository at this point in the history
  • Loading branch information
ArnaudBarre committed Jun 3, 2023
1 parent a20d026 commit 0672e2e
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 34 deletions.
48 changes: 21 additions & 27 deletions packages/vite/src/node/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,17 +138,19 @@ export interface BuildOptions {
/**
* @experimental
* Use Lightning CSS to minify CSS. This should be installed as a peer
* dependency. Targets is automatically converted from esbuild (css)target, but
* can be provided for more granular control.
* dependency.
* @default esbuild
*/
cssMinifier?:
| { minifier: 'esbuild' }
| {
minifier: 'lightningcss'
targets?: LightningCSS['Targets']
drafts?: LightningCSS['Drafts']
}
cssMinifier?: 'esbuild' | 'lightningcss'
/**
* @experimental
* Targets is automatically converted from esbuild (css)target, but
* can be provided for more granular control.
*/
lightningcss?: {
targets?: LightningCSS['Targets']
drafts?: LightningCSS['Drafts']
}
/**
* If `true`, a separate sourcemap file will be created. If 'inline', the
* sourcemap will be appended to the resulting output file as data URI.
Expand Down Expand Up @@ -315,16 +317,13 @@ export type ResolveModulePreloadDependenciesFn = (

export interface ResolvedBuildOptions
extends Required<
Omit<BuildOptions, 'polyfillModulePreload' | 'cssMinifier'>
Omit<BuildOptions, 'polyfillModulePreload' | 'lightningcss'>
> {
modulePreload: false | ResolvedModulePreloadOptions
cssMinifier:
| { minifier: 'esbuild' }
| {
minifier: 'lightningcss'
targets: LightningCSS['Targets']
drafts: LightningCSS['Drafts']
}
lightningcss?: {
targets: LightningCSS['Targets']
drafts: LightningCSS['Drafts']
}
}

export function resolveBuildOptions(
Expand Down Expand Up @@ -444,16 +443,11 @@ export function resolveBuildOptions(
resolved.cssMinify = !!resolved.minify
}

if (!resolved.cssMinifier) {
resolved.cssMinifier = { minifier: 'esbuild' }
}

if (resolved.cssMinifier.minifier === 'lightningcss') {
if (!resolved.cssMinifier.targets) {
resolved.cssMinifier.targets = convertTargets(resolved.cssTarget)
}
if (!resolved.cssMinifier.drafts) {
resolved.cssMinifier.drafts = {}
if (resolved.cssMinifier === 'lightningcss') {
resolved.lightningcss = {
targets:
resolved.lightningcss?.targets ?? convertTargets(resolved.cssTarget),
drafts: resolved.lightningcss?.drafts ?? {},
}
}

Expand Down
12 changes: 6 additions & 6 deletions packages/vite/src/node/plugins/css.ts
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,9 @@ export function resolveCSSOptions(
...options,
lightningcss: {
targets:
resolvedBuildOptions.cssMinifier.minifier === 'lightningcss' &&
resolvedBuildOptions.cssMinifier.targets
? resolvedBuildOptions.cssMinifier.targets
resolvedBuildOptions.cssMinifier === 'lightningcss' &&
resolvedBuildOptions.lightningcss?.targets
? resolvedBuildOptions.lightningcss.targets
: convertTargets(resolvedBuildOptions.cssTarget),
modules: options.lightningcss.modules,
drafts: options.lightningcss.drafts ?? {},
Expand Down Expand Up @@ -1476,12 +1476,12 @@ async function doImportCSSReplace(
}

async function minifyCSS(css: string, config: ResolvedConfig) {
if (config.build.cssMinifier?.minifier === 'lightningcss') {
if (config.build.cssMinifier === 'lightningcss') {
const { code, warnings } = (await importLightningCSS()).transform({
filename: cssBundleName,
code: Buffer.from(css),
targets: config.build.cssMinifier.targets,
drafts: config.build.cssMinifier.drafts,
targets: config.build.lightningcss!.targets,
drafts: config.build.lightningcss!.drafts,
minify: true,
})
if (warnings.length) {
Expand Down
2 changes: 1 addition & 1 deletion playground/css-lightningcss/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ export default defineConfig({
},
build: {
cssTarget: ['chrome61'],
cssMinifier: { minifier: 'lightningcss' },
cssMinifier: 'lightningcss',
},
})

0 comments on commit 0672e2e

Please sign in to comment.