import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vueDevTools from 'vite-plugin-vue-devtools' // auto import - 新增的自动导入插件导入 import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import ElementPlus from 'unplugin-element-plus/vite' import Icons from 'unplugin-icons/vite' import IconsResolver from 'unplugin-icons/resolver' // https://vite.dev/config/ export default defineConfig({ plugins: [ vue(), vueDevTools(), // Element Plus 样式按需导入 ElementPlus({ useSource: true }), // 自动导入 API AutoImport({ // 自动导入Vue、VueRouter、Pinia、VueUse等核心API imports: [ 'vue', 'vue-router', 'pinia', '@vueuse/core' ], // 解析Element Plus和图标组件的API resolvers: [ ElementPlusResolver(), IconsResolver({ prefix: 'Icon' }) ], // 生成类型声明文件,解决TS类型提示问题 dts: './src/auto-imports.d.ts', // 生成eslint配置,解决自动导入的eslint报错 eslintrc: { enabled: true, filepath: './.eslintrc-auto-import.json' } }), // 自动导入组件 Components({ // 自动导入自定义组件的目录 dirs: ['src/components'], resolvers: [ // 自动导入Element Plus组件 ElementPlusResolver(), // 自动导入图标组件 IconsResolver({ enabledCollections: ['ep'], // Element Plus图标集 prefix: 'Icon' }) ], // 生成组件类型声明文件 dts: './src/components.d.ts' }), // 自动导入图标 Icons({ autoInstall: true, // 自动安装缺失的图标依赖 scale: 1, // 图标缩放比例 defaultClass: 'inline-block' // 图标默认样式 }), // ========== 新增的自动导入配置结束 ========== ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) }, }, // 跨域代理核心配置 server: { port: 5173, // 前端项目运行端口(可自定义) cors: true, // 允许跨域(基础配置) proxy: { // 匹配以 /api 开头的请求 '/api': { target: 'http://192.168.10.10:8085', // 后端接口基础地址 changeOrigin: true, // 开启跨域(关键) rewrite: (path) => path.replace(/^\/api/, '/api') // 路径重写(根据后端实际情况调整) // 如果后端接口没有 /api 前缀,需要改为:rewrite: (path) => path.replace(/^\/api/, '') } } } })