import vue from '@vitejs/plugin-vue' import { fileURLToPath, URL } from 'node:url' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import { defineConfig, loadEnv } from 'vite' const DEFAULT_PROXY_TARGET = 'https://192.168.3.233' /** Vite `base`:与 `VITE_BASE_URL` 对齐,供 `import.meta.env.BASE_URL` 与 Vue Router 使用 */ function resolveViteBase(raw: string | undefined): string { const trimmed = (raw ?? '/').trim() if (!trimmed || trimmed === '/') return '/' const withLeading = trimmed.startsWith('/') ? trimmed : `/${trimmed}` return withLeading.endsWith('/') ? withLeading : `${withLeading}/` } // https://vite.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), '') const proxyTarget = (env.VITE_API_PROXY_TARGET || DEFAULT_PROXY_TARGET).trim().replace(/\/+$/, '') const base = resolveViteBase(env.VITE_BASE_URL) return { base, plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver()], dts: 'src/types/auto-imports.d.ts', }), Components({ resolvers: [ElementPlusResolver({ importStyle: 'sass' })], dts: 'src/types/components.d.ts', }), ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, server: { host: true, port: 5173, open: true, allowedHosts: true, proxy: { // '/base': { // target: proxyTarget, // changeOrigin: true, // secure: false, // }, // '/trade': { // target: proxyTarget, // changeOrigin: true, // secure: false, // }, // '/product': { // target: proxyTarget, // changeOrigin: true, // secure: false, // }, '/api': { target: proxyTarget, changeOrigin: true, secure: false, }, }, }, preview: { host: true, port: 5173, allowedHosts: true, }, css: { preprocessorOptions: { scss: { additionalData: `@use "@/styles/mixins/respond" as *;\n`, }, }, }, } })