import { fileURLToPath, URL } from "node:url"; import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import Icons from "unplugin-icons/vite"; import { fontsPlugin } from "./src/fonts/vite-plugin-fonts"; /** * 这个工具**只在 dev 下完整可用**:系统字体的枚举与读取走 `fontsPlugin` 挂在 Vite * 开发服务器上的中间件,`vite build` 出的静态产物里没有那两个接口。 * 这是刻意的——自用工具不值得为此单起一个后端进程。 */ export default defineConfig({ plugins: [ vue(), // 图标:`import IconFoo from "~icons/solar/xxx-linear"` 在**构建期**从 // `@iconify-json/*` 里取出 SVG 编成 Vue 组件,不联网、不打包整套图标集。 // `defaultClass` 让所有图标共享一条样式规则(尺寸/描边色见 style.css 的 .icon)。 Icons({ compiler: "vue3", scale: 1, defaultClass: "icon" }), fontsPlugin(), ], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), }, }, server: { port: 5180, watch: { // `.worktrees/` 底下是并行开发用的完整项目副本。不排除的话,任何一条线改文件 // 都会触发主 dev 的全量重载(它们各有一份 tsconfig,Vite 检测到就清缓存重启), // 实测会直接把 dev 进程搞挂。 ignored: ["**/.worktrees/**"], }, }, });