import { fileURLToPath, URL } from 'node:url' import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' // import electron from 'vite-plugin-electron' // import vueDevTools from 'vite-plugin-vue-devtools' import mkcert from "vite-plugin-mkcert"; // https://vite.dev/config/ export default defineConfig(({ command, mode }) => { const env = loadEnv(mode, process.cwd()) console.log('env', env) // 将环境变量转换为 process.env 格式 const processEnv = {} Object.keys(env).forEach(key => { processEnv[key] = JSON.stringify(env[key]) }) return { plugins: [ vue(), mkcert({ source: 'coding', autoUpgrade: true, force: true, }), // electron({ // entry: 'electron/main.js', // }), // vueDevTools(), ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, css: { preprocessorOptions: { scss: { additionalData: `` } } }, server: { host: true, https: true, cors: true, proxy: { '/api': { target: env.VITE_APP_BASE_API, changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ''), secure: false, configure: (proxy, options) => { proxy.on('proxyReq', (proxyReq, req, res) => { proxyReq.setHeader('Origin', env.VITE_APP_BASE_API); proxyReq.setHeader('Access-Control-Request-Method', '*'); if (req.url.includes('chat-messages')) { proxyReq.setHeader('Accept', 'text/event-stream'); } }); proxy.on('proxyRes', (proxyRes, req, res) => { if (req.url.includes('chat-messages')) { proxyRes.headers['content-type'] = 'text/event-stream'; proxyRes.headers['Cache-Control'] = 'no-cache'; proxyRes.headers['Connection'] = 'keep-alive'; } }); } } } }, build: { rollupOptions: { output: { manualChunks: { 'vendor': ['vue', 'vue-router', 'pinia'] } } }, chunkSizeWarningLimit: 1500, terserOptions: { compress: { // drop_console: true, drop_debugger: true } } }, define: { 'process.env': processEnv } } })