import { fileURLToPath, URL } from 'node:url' import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import DefineOptions from 'unplugin-vue-define-options/vite' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' import path from 'path' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import Sitemap from 'vite-ssg-sitemap' // console.log(process) // console.log(import.meta.env.VITE_APP_URL) // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd()) return { plugins: [ vue(), DefineOptions(), // ... AutoImport({ resolvers: [ElementPlusResolver()], }), Components({ resolvers: [ElementPlusResolver()], }), createSvgIconsPlugin({ // 指定需要缓存的图标文件夹 iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')], // 指定symbolId格式 symbolId: 'icon-[dir]-[name]', inject: 'body-last' // 注入位置优化 }), Sitemap({ hostname: env.VITE_APP_URL, outDir: 'dist' }) ], define: { __VUE_PROD_HYDRATION_MISMATCH_DETAILS__: false, }, css: { preprocessorOptions: { less: { modifyVars: { 'primary-color': '#ec6800' }, javascriptEnabled: true, // 全局导入less变量文件 additionalData: `@import "${path.resolve(__dirname, 'src/assets/css/style.less')}";` } } }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), _c: fileURLToPath(new URL('./src/components', import.meta.url)) } }, server: { host: '0.0.0.0', // 允许局域网内的IP访问 port: 8060, // 根据环境设置端口 open: false, // 自动打开浏览器 strictPort: true, // 如果端口已被占用,则尝试下一个可用端口 hmr: { overlay: true }, proxy: { '/api': { //'/api'是自行设置的请求前缀 target: env.VITE_APP_URL, changeOrigin: true, //用于控制请求头中的host值 rewrite: (path) => path.replace(/^\/api/, '/api') //路径重写,(正则)匹配以api开头的路径为空(将请求前缀删除) } } } } })