首次提交
This commit is contained in:
83
uno.config.ts
Normal file
83
uno.config.ts
Normal file
@@ -0,0 +1,83 @@
|
||||
// https://unocss.nodejs.cn/guide/config-file
|
||||
import {
|
||||
defineConfig,
|
||||
presetAttributify,
|
||||
presetIcons,
|
||||
presetTypography,
|
||||
presetUno,
|
||||
presetWebFonts,
|
||||
transformerDirectives,
|
||||
transformerVariantGroup,
|
||||
} from "unocss";
|
||||
|
||||
import { FileSystemIconLoader } from "@iconify/utils/lib/loader/node-loaders";
|
||||
import fs from "fs";
|
||||
|
||||
// 本地SVG图标目录
|
||||
const iconsDir = "./src/assets/icons";
|
||||
|
||||
// 读取本地 SVG 目录,自动生成 safelist
|
||||
const generateSafeList = () => {
|
||||
try {
|
||||
return fs
|
||||
.readdirSync(iconsDir)
|
||||
.filter((file) => file.endsWith(".svg"))
|
||||
.map((file) => `i-svg:${file.replace(".svg", "")}`);
|
||||
} catch (error) {
|
||||
console.error("无法读取图标目录:", error);
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
export default defineConfig({
|
||||
// 自定义快捷类
|
||||
shortcuts: {
|
||||
"wh-full": "w-full h-full",
|
||||
"flex-center": "flex justify-center items-center",
|
||||
"flex-x-center": "flex justify-center",
|
||||
"flex-y-center": "flex items-center",
|
||||
"flex-x-start": "flex items-center justify-start",
|
||||
"flex-x-between": "flex items-center justify-between",
|
||||
"flex-x-end": "flex items-center justify-end",
|
||||
},
|
||||
theme: {
|
||||
colors: {
|
||||
primary: "var(--el-color-primary)",
|
||||
primary_dark: "var(--el-color-primary-light-5)",
|
||||
},
|
||||
breakpoints: Object.fromEntries(
|
||||
[640, 768, 1024, 1280, 1536, 1920, 2560].map((size, index) => [
|
||||
["sm", "md", "lg", "xl", "2xl", "3xl", "4xl"][index],
|
||||
`${size}px`,
|
||||
])
|
||||
),
|
||||
},
|
||||
presets: [
|
||||
presetUno(),
|
||||
presetAttributify(),
|
||||
presetIcons({
|
||||
// 额外属性
|
||||
extraProperties: {
|
||||
display: "inline-block",
|
||||
width: "1em",
|
||||
height: "1em",
|
||||
},
|
||||
// 图表集合
|
||||
collections: {
|
||||
// svg 是图标集合名称,使用 `i-svg:图标名` 调用
|
||||
svg: FileSystemIconLoader(iconsDir, (svg) => {
|
||||
// 如果 `fill` 没有定义,则添加 `fill="currentColor"`
|
||||
return svg.includes('fill="') ? svg : svg.replace(/^<svg /, '<svg fill="currentColor" ');
|
||||
}),
|
||||
},
|
||||
}),
|
||||
presetTypography(),
|
||||
presetWebFonts({
|
||||
fonts: {
|
||||
// ...
|
||||
},
|
||||
}),
|
||||
],
|
||||
safelist: generateSafeList(),
|
||||
transformers: [transformerDirectives(), transformerVariantGroup()],
|
||||
});
|
||||
Reference in New Issue
Block a user