Files
ds2api/webui/vite.config.js

49 lines
1.6 KiB
JavaScript

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
const webuiDir = dirname(fileURLToPath(import.meta.url))
const repoRoot = resolve(webuiDir, '..')
export default defineConfig(({ mode }) => ({
plugins: [
react(),
],
server: {
port: 5173,
fs: {
allow: [repoRoot],
},
proxy: {
// 代理 /admin 下的 API 请求到后端
'/admin': {
target: 'http://localhost:5001',
changeOrigin: true,
// 只代理 API 请求,页面请求返回 false 让 Vite 处理
bypass(req, res, proxyOptions) {
const url = req.url
// 精确的 /admin 或 /admin/ 是页面请求,不代理
if (url === '/admin' || url === '/admin/' || url === '/admin?') {
console.log('[Vite Proxy] Bypass (page):', url)
return '/index.html'
}
// 其他 /admin/* 路径都是 API 请求,代理到后端
console.log('[Vite Proxy] Proxy to backend:', url)
// 返回 undefined 或 null 表示不跳过代理
},
},
'/v1': {
target: 'http://localhost:5001',
changeOrigin: true,
},
},
},
build: {
outDir: '../static/admin',
emptyOutDir: true,
},
// Use / for dev, /admin/ for production build
base: mode === 'production' ? '/admin/' : '/',
}))