import { defineConfig, loadEnv, ConfigEnv, UserConfig } from 'vite' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' import vue from '@vitejs/plugin-vue' import path from 'path' import { wrapperEnv } from './build/getEnv' import { createProxy } from './build/proxy' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineConfig(({ mode }: ConfigEnv): UserConfig => { const root = process.cwd() const env = loadEnv(mode, root) const viteEnv = wrapperEnv(env) return { plugins: [ vue(), // svg图标配置,可以使用svg图标 createSvgIconsPlugin({ iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')], symbolId: 'icon-[dir]-[name]', }), AutoImport({ resolvers: [ElementPlusResolver({ importStyle: 'sass', })], }), Components({ resolvers: [ElementPlusResolver({ importStyle: 'sass', })], }), ], // 基础配置 base: viteEnv.VITE_PUBLIC_PATH, root, publicDir: 'public', resolve: { alias: { '@': path.resolve(__dirname, 'src'), 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js', }, }, css: { preprocessorOptions: { scss: { prependData: `@import "@/styles/var.scss";`, }, }, }, build: { outDir: 'dist', assetsDir: 'assets', assetsInlineLimit: 4096, cssCodeSplit: true, sourcemap: false, minify: 'terser', terserOptions: { compress: { // 生产环境去除console及debug drop_console: false, drop_debugger: true, }, }, }, server: { host: '0.0.0.0', port: viteEnv.VITE_PORT, open: viteEnv.VITE_OPEN, cors: true, proxy: createProxy(viteEnv.VITE_PROXY), }, } })