front-template/presets/autoprefixer.ts
2025-01-07 15:29:05 +08:00

34 lines
897 B
TypeScript

import type { Preset } from 'unocss'
import browserslist from 'browserslist'
import { defaultBuildTargets } from './shared/detect'
import { browserslistToTargets, transformStyleAttribute } from 'lightningcss'
export default function autoprefixerPreset(
targets: string[] = defaultBuildTargets,
): Preset {
return {
name: 'unocss-preset-autoprefixer',
postprocess: (util) => {
const entries = util.entries
const { code } = transformStyleAttribute({
code: Buffer.from(
entries
.filter((item) => !item[0].startsWith('--un'))
.map((x) => x.join(':'))
.join(';'),
),
targets: browserslistToTargets(browserslist(targets)),
minify: true,
})
util.entries = [
...entries.filter((item) => item[0].startsWith('--un')),
...(code
.toString()
.split(';')
.map((i) => i.split(':')) as [string, string | number][]),
]
},
}
}