import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import { resolve } from 'path' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' // https://vitejs.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), '') const base = process.argv.includes('--base') ? process.argv[process.argv.indexOf('--base') + 1] : '/'; // 默认值 return { base, plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver()], imports: [ 'vue', 'vue-router', 'pinia', { axios: [ ['default', 'axios'] ] } ], dts: true }), Components({ resolvers: [ElementPlusResolver()] }) ], resolve: { alias: { '@': resolve(__dirname, 'src') } }, server: { port: 3000, host: '0.0.0.0', proxy: { '/api': { target: 'http://127.0.0.1:8000', changeOrigin: true, secure: false, rewrite: (path) => path, configure: (proxy, options) => { proxy.on('proxyReq', (proxyReq, req, res) => { // 确保Authorization头部被正确传递 if (req.headers.authorization) { proxyReq.setHeader('Authorization', req.headers.authorization); } }); } } } }, build: { outDir: 'dist', sourcemap: false, chunkSizeWarningLimit: 1600, rollupOptions: { output: { manualChunks: { 'vue-vendor': ['vue', 'vue-router', 'pinia', 'element-plus'], } } } }, css: { preprocessorOptions: { scss: { additionalData: `@import "@/styles/variables.scss";"` } } }, // 定义环境变量 define: { __VITE_ENV__: JSON.stringify(env) } } })