import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import viteCompression from 'vite-plugin-compression' import { viteMockServe } from 'vite-plugin-mock' import { fileURLToPath, URL } from 'url' // https://vitejs.dev/guide/env-and-mode.html#env-files export default defineConfig(({ mode, command }) => { const env = loadEnv(mode, process.cwd()) return { plugins: [ vue(), // gzip 压缩 viteCompression(), // 本地 mock 服务(仅 dev 启用,prod 不引入) viteMockServe({ mockPath: 'mock', localEnabled: command === 'serve', }), ], base: env.VITE_RES_URL, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, css: { preprocessorOptions: { scss: { additionalData: `@use "@/style/mixin.scss" as *;` } } }, build: { // 拆 chunk,减少首屏加载 rollupOptions: { output: { manualChunks: { 'vendor-vue': ['vue', 'vue-router', 'pinia'], 'vendor-ui': ['element-plus', '@element-plus/icons-vue'], 'vendor-chart': ['echarts'], } } } } } })