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 vueJsx from "@vitejs/plugin-vue-jsx"; 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", }), ], }), // 增加此行代码 vueJsx(), ], // 基础配置 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), }, }; });