Skip to content

Commit 2dc9b90

Browse files
committed
perf: setup lightningcss for webcomponents css minification
1 parent cc8dbb7 commit 2dc9b90

7 files changed

Lines changed: 32 additions & 6 deletions

File tree

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
"eslint": "catalog:tooling",
5050
"h3": "catalog:deps",
5151
"knip": "catalog:tooling",
52+
"lightningcss": "catalog:build",
5253
"nano-staged": "catalog:tooling",
5354
"pathe": "catalog:deps",
5455
"prompts": "catalog:tooling",

packages/hub-ui/scripts/build-css.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import { Buffer } from 'node:buffer'
12
import fs from 'node:fs/promises'
23
import { createRequire } from 'node:module'
34
import { join } from 'node:path'
45
import { fileURLToPath } from 'node:url'
56
import { colors as c } from 'devframe/utils/colors'
7+
import { transform } from 'lightningcss'
68
import MagicString from 'magic-string'
79
import { glob } from 'tinyglobby'
810
import { createGenerator } from 'unocss'
@@ -80,13 +82,20 @@ export async function buildCSS(): Promise<void> {
8082
// Namespace Wind's `--un-*` vars (→ `--un-hub-*`) so this shadow-root
8183
// stylesheet is immune to a host page's Wind4 `@property` registrations
8284
// (see `namespaceShadowCssVars`).
83-
const css = namespaceShadowCssVars([
85+
let css = [
8486
reset,
8587
userStyle.toString(),
8688
unoCss,
8789
surfacesCss,
8890
primaryRamp,
89-
].join('\n'), '--un-hub-')
91+
].join('\n')
92+
93+
css = namespaceShadowCssVars(css, '--un-hub-')
94+
css = transform({
95+
filename: 'hub-ui.css',
96+
code: Buffer.from(css),
97+
minify: true,
98+
}).code.toString()
9099

91100
await fs.mkdir(join(SRC_DIR, '.generated'), { recursive: true })
92101
await fs.writeFile(GENERATED_CSS, [

packages/hub-ui/src/client/.generated/css.ts

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

packages/json-render-ui/scripts/build-css.ts

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import { Buffer } from 'node:buffer'
12
import fs from 'node:fs/promises'
23
import { createRequire } from 'node:module'
34
import { join } from 'node:path'
45
import { fileURLToPath } from 'node:url'
56
import { colors as c } from 'devframe/utils/colors'
7+
import { transform } from 'lightningcss'
68
import { glob } from 'tinyglobby'
79
import { createGenerator } from 'unocss'
810
import { namespaceShadowCssVars, rewireBakedPrimaryColors, shadowSurfaceSafelist } from '../../../design/uno.config'
@@ -73,12 +75,19 @@ export async function buildCSS(): Promise<void> {
7375
// Namespace Wind's `--un-*` vars (→ `--un-jr-*`) so this shadow-root
7476
// stylesheet is immune to a host page's Wind4 `@property` registrations
7577
// (see `namespaceShadowCssVars`).
76-
const css = namespaceShadowCssVars([
78+
let css = [
7779
reset,
7880
unoCss,
7981
surfacesCss,
8082
primaryRamp,
81-
].join('\n'), '--un-jr-')
83+
].join('\n')
84+
85+
css = namespaceShadowCssVars(css, '--un-jr-')
86+
css = transform({
87+
filename: 'hub-ui.css',
88+
code: Buffer.from(css),
89+
minify: true,
90+
}).code.toString()
8291

8392
await fs.mkdir(join(SRC_DIR, '.generated'), { recursive: true })
8493
await fs.writeFile(GENERATED_CSS, [

packages/json-render-ui/src/.generated/css.ts

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

pnpm-lock.yaml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pnpm-workspace.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ catalogs:
6363
'@preact/preset-vite': ^2.10.6
6464
'@rsbuild/core': ^2.1.11
6565
'@vitejs/plugin-vue': ^6.0.8
66+
lightningcss: ^1.33.0
6667
magic-string: ^1.1.1
6768
mlly: ^1.8.2
6869
nuxt: ^4.5.2

0 commit comments

Comments
 (0)