import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import UnoCSS from 'unocss/vite' import { fileURLToPath, URL } from 'node:url' // https://vite.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd()) return { base: './', plugins: [ vue(), vueJsx(), AutoImport({ imports: ['vue', 'vue-router', 'pinia'], // 不让 resolver 自动注入组件 CSS:main.ts 已统一 import 'element-plus/dist/index.css' // 避免 unplugin-vue-components 在某些版本下生成 element-plus/es/.../style/css(无扩展名)路径报错 resolvers: [ElementPlusResolver({ importStyle: false })], dts: 'src/types/auto-imports.d.ts', eslintrc: { enabled: true } }), Components({ // 同上:组件 JS 按需引入,但样式由 main.ts 全量引入 resolvers: [ElementPlusResolver({ importStyle: false })], dts: 'src/types/components.d.ts' }), UnoCSS() ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, css: { preprocessorOptions: { scss: { // 全局注入设计系统变量到每个 .scss / .vue