以下是一个典型的 UnoCSS 配置案例,包含了多种常用的设置和功能:
// uno.config.ts
import { defineConfig, presetUno, presetAttributify, presetIcons } from 'unocss'
import { presetTypography } from '@unocss/preset-typography'
import { presetWebFonts } from '@unocss/preset-web-fonts'
import transformerDirectives from '@unocss/transformer-directives'
import transformerVariantGroup from '@unocss/transformer-variant-group'
export default defineConfig({
// 启用预设
presets: [
presetUno(),
presetAttributify(),
presetIcons({
scale: 1.2,
warn: true,
}),
presetTypography(),
presetWebFonts({
fonts: {
sans: 'Roboto',
mono: ['Fira Code', 'Fira Mono:400,700'],
},
}),
],
// 自定义快捷方式
shortcuts: [
['btn', 'px-4 py-1 rounded inline-block bg-teal-600 text-white cursor-pointer hover:bg-teal-700 disabled:cursor-default disabled:bg-gray-600 disabled:opacity-50'],
['icon-btn', 'text-[0.9em] inline-block cursor-pointer select-none opacity-75 transition duration-200 ease-in-out hover:opacity-100 hover:text-teal-600 !outline-none'],
],
// 自定义规则
rules: [
['custom-rule', { color: 'red' }],
[/^text-(.*)$/, ([, c]) => ({ color: c })],
],
// 主题配置
theme: {
colors: {
'primary': '#3490dc',
'secondary': '#ffed4a',
'danger': '#e3342f',
},
breakpoints: {
sm: '640px',
md: '768px',
lg: '1024px',
xl: '1280px',
'2xl': '1536px',
},
},
// 变体
variants: [
(matcher) => {
if (!matcher.startsWith('hover:')) return matcher
return {
matcher: matcher.slice(6),
selector: s => `${s}:hover`,
}
},
],
// 安全列表,确保这些类始终生成
safelist: 'prose prose-sm m-auto text-left'.split(' '),
// 转换器
transformers: [
transformerDirectives(),
transformerVariantGroup(),
],
// 自定义注入
inject: {
postprocess: (css) => css.replace(/\/\*[\s\S]*?\*\//g, ''),
},
// IDE 自动补全支持
autocomplete: {
shorthands: {
// 自定义快捷方式的自动补全
'btn': 'btn',
'icon': 'i-',
},
},
})这个配置案例包含了以下特性:
-
预设:使用了多个预设,包括基础的
presetUno、属性模式的presetAttributify、图标支持的presetIcons、排版的presetTypography和 Web 字体的presetWebFonts。 -
快捷方式:定义了常用的类组合,如按钮和图标按钮。
-
自定义规则:包含了一个静态规则和一个动态规则(使用正则表达式)。
-
主题配置:自定义了颜色和断点。
-
变体:添加了一个自定义的 hover 变体处理器。
-
安全列表:确保某些类始终被生成,即使它们没有在代码中被使用。
-
转换器:使用了指令转换器和变体组转换器,增强了 UnoCSS 的功能。
-
自定义注入:在这个例子中,移除了所有的 CSS 注释。
-
IDE 自动补全支持:为自定义的快捷方式添加了自动补全配置。
这个配置涵盖了 UnoCSS 的大多数常用功能,可以根据项目需求进行调整和扩展。它提供了一个良好的起点,可以满足大多数 Web 项目的需求,同时保持了高度的可定制性。