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 { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), '') const proxyTarget = process.env.API_PROXY_TARGET || env.API_PROXY_TARGET || 'http://localhost:9000' // 静态资源基址:CI 构建时注入 VITE_CDN_BASE(= CDN 域名 + 版本路径,如 // https:////dist/),使打包出的 index.html 中 JS/CSS // 引用变为 CDN 绝对 URL,实现「nginx 发 index 外壳、静态走 CDN」。 // 未注入时回退到 '/'(本地 dev 与无 CDN 兜底,行为与原来一致)。 const cdnBase = process.env.VITE_CDN_BASE || env.VITE_CDN_BASE || '/' return { base: cdnBase, plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver()], dts: 'src/auto-imports.d.ts', }), Components({ resolvers: [ name => name === 'ElSelect' ? { name: 'AdminSelect', from: '@/shared/components/AdminSelect', sideEffects: 'element-plus/es/components/select/style/css', } : undefined, ElementPlusResolver(), ], dts: 'src/components.d.ts', }), ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, server: { strictPort: true, proxy: { '/api': { target: proxyTarget, changeOrigin: true, configure(proxy) { proxy.on('proxyReq', (proxyRequest) => { proxyRequest.removeHeader('origin') }) }, }, }, }, } })