import { defineConfig, loadEnv } from "vite"; import vue from "@vitejs/plugin-vue"; import path from "path"; import Icons from "unplugin-icons/vite"; import IconsResolver from "unplugin-icons/resolver"; import AutoImport from "unplugin-auto-import/vite"; import Components from "unplugin-vue-components/vite"; import { createSvgIconsPlugin } from "vite-plugin-svg-icons"; import { ElementPlusResolver } from "unplugin-vue-components/resolvers"; import zipBuildPlugin from './zipBuildPlugin'; // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const ENV = loadEnv(mode, process.cwd()); return { base: ENV.VITE_APP_BASE_URL, // 若服务器不是将该项目放在根目录的则 需要此设置 和服务器上同名 plugins: [ vue(), AutoImport({ // 自动导入 Vue 相关函数,如:ref, reactive, toRef 等 imports: ["vue"], resolvers: [ ElementPlusResolver(), // 自动导入图标组件 IconsResolver({ prefix: "Icon", }), ], }), Components({ resolvers: [ ElementPlusResolver(), // 自动注册图标组件 IconsResolver({ enabledCollections: ["ep"], }), { type: 'directive', resolve: (name) => { if (name === 'Loading') { return { name: 'vLoading', from: `element-plus/es/components/loading/src/directive` }; } else { return; } }, } ], directives: true }), Icons({ autoInstall: true, }), createSvgIconsPlugin({ // 指定需要缓存的图标文件夹 iconDirs: [path.resolve(process.cwd(), "src/assets/svg")], // 指定symbolId格式 symbolId: "[name]", /** * 自定义插入位置 * @default: body-last */ // inject?: 'body-last' | 'body-first' /** * custom dom id * @default: __svg__icons__dom__ */ // customDomId: '__svg__icons__dom__' }), zipBuildPlugin() ], css: { // css预处理器 preprocessorOptions: { scss: { // 定义全局的scss变量 // 给导入的路径最后加上 ; // additionalData: `@import '@/styles/var.scss';`, }, }, }, resolve: { alias: { "@": path.resolve(__dirname, "./src"), }, }, build: { outDir: ENV.VITE_APP_OUTDIR, }, server: { port: 8706, proxy: { "/v1": { target: "http://8.136.199.33:8705/adminapi", changeOrigin: true, rewrite: (path) => path.replace(/^\/v1/, ""), }, }, }, }; });