import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import UnoCSS from 'unocss/vite'; 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'; export default defineConfig({ plugins: [ vue(), UnoCSS(), AutoImport({ imports: [ 'vue', 'vue-router', 'pinia', { 'ant-design-vue': ['message', 'notification', 'Modal'], }, ], dts: 'src/auto-imports.d.ts', }), 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, }, });