import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import { resolve } from 'path'; import AutoImport from 'unplugin-auto-import/vite'; import Components from 'unplugin-vue-components/vite'; import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'; import viteCompression from 'vite-plugin-compression'; import fileRouter from 'unplugin-vue-router/vite'; export default defineConfig({ plugins: [ vue(), fileRouter({ routesFolder: 'src/views', extensions: ['.vue'], importMode: 'sync', }), AutoImport({ imports: [ 'vue', 'vue-router', 'pinia', { 'ant-design-vue': ['message', 'notification', 'Modal'], }, ], dts: 'src/auto-imports.d.ts', // 添加 vue-router 的自动导入 vueTemplate: true, }), Components({ resolvers: [ AntDesignVueResolver({ importStyle: false, }), ], dts: 'src/components.d.ts', }), viteCompression({ verbose: true, disable: false, threshold: 10240, algorithm: 'gzip', ext: '.gz', }), ], resolve: { alias: { '@': resolve(__dirname, 'src'), }, }, server: { port: 5173, host: true, proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '/api'), }, '/uploads': { target: 'http://localhost:3000', changeOrigin: true, }, }, }, build: { rollupOptions: { output: { manualChunks: { 'ant-design-vue': ['ant-design-vue', '@ant-design/icons-vue'], 'echarts': ['echarts'], 'fullcalendar': ['@fullcalendar/vue3', '@fullcalendar/core', '@fullcalendar/daygrid', '@fullcalendar/timegrid', '@fullcalendar/interaction'], 'dayjs': ['dayjs'], }, }, }, chunkSizeWarningLimit: 1000, }, });