// Vite 配置:构建产物输出到 frontend/dist,后端 web/routers/index.py 直接服务它。 // 开发模式:API 全在根路径(/song、/search、/auth/...),把非 Vite 内部路径全部 // 反代到本机后端(uvicorn 0.0.0.0:5000),浏览器里前后端如同同源。 import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' const BACKEND = process.env.BACKEND_ORIGIN || 'http://127.0.0.1:5000' export default defineConfig({ plugins: [react()], build: { outDir: 'dist', sourcemap: true, // 固定产物文件名(不带内容 hash):index.html 字节级稳定, // tests/test_golden.py 的黄金快照契约才能跨构建成立 rollupOptions: { output: { entryFileNames: 'assets/app.js', chunkFileNames: 'assets/[name].js', assetFileNames: 'assets/app.[ext]', }, }, }, server: { port: 5173, proxy: { // Vite 自身路径放行,其余(API 与页面)全部反代后端 '/@vite': { target: BACKEND, bypass: (req) => req.url || undefined }, '/@react-refresh': { target: BACKEND, bypass: (req) => req.url || undefined }, '/src': { target: BACKEND, bypass: (req) => req.url || undefined }, '/node_modules': { target: BACKEND, bypass: (req) => req.url || undefined }, '/': { target: BACKEND, changeOrigin: true }, }, }, })