import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' export default defineConfig(async () => ({ plugins: [ vue(), createSvgIconsPlugin({ // 指定 SVG 文件目录(递归扫描) iconDirs: [resolve(__dirname, 'src/assets/image')], // symbol id 格式:icon-文件夹-文件名 symbolId: 'icon-[dir]-[name]', // 注入位置 inject: 'body-last', customDomId: '__svg_sprite__', }), ], base: "./", server: { port: '55813', // 指定启动端口 open: true, //启动后是否自动打开浏览器 proxy: { '/api': { // target: 'https://kcsl-dev.kangcer.com', // target: 'http://localhost:53801', // target: 'http://localhost:10640', target: 'http://localhost:5276', secure: false, changeOrigin: true, rewrite: path => path.replace(/^\/api/, '') } } }, resolve: { // 配置别名 添加的,这里只添加了一个别名,想配置更多别名就在这里再加条目即可 alias: { '@': resolve(__dirname, './src'), } }, css: { preprocessorOptions: { scss: { // 使用纯 JS 版本的 sass,避免 sass-embedded 在 Windows 上处理大量 SCSS 时内存爆炸 implementation: await import('sass'), silenceDeprecations: ['legacy-js-api', 'import', 'global-builtin', 'color-functions'], }, }, }, build: { // 提高 sourcemap 阈值以减少内存峰值 sourcemap: false, // 警告阈值:项目中含 element-plus 全量样式 + echarts,体积较大,放宽到 2MB chunkSizeWarningLimit: 2000, rollupOptions: { output: { // 把大型依赖拆成独立 chunk,减少单 chunk 体积并改善首屏 manualChunks: { 'vue-vendor': ['vue', 'vue-router', 'pinia', 'pinia-plugin-persistedstate'], 'element-plus': ['element-plus', '@element-plus/icons-vue'], 'echarts-vendor': ['echarts', 'vue-echarts'], 'editor-vendor': ['@wangeditor/editor', '@wangeditor/editor-for-vue'], 'pdf-vendor': ['vue-pdf-embed'], }, }, }, }, }))