import { defineConfig, loadEnv } from 'vite' import react from '@vitejs/plugin-react' function resolveVendorChunk(id: string) { if (!id.includes('node_modules')) return undefined if ( id.includes('/react-markdown/') || id.includes('/remark-gfm/') || id.includes('/rehype-raw/') || id.includes('/rehype-sanitize/') || id.includes('/remark-') || id.includes('/rehype-') || id.includes('/unified/') || id.includes('/micromark/') || id.includes('/mdast-') || id.includes('/hast-') ) { return 'vendor-markdown' } if ( id.includes('/react/') || id.includes('/react-dom/') || id.includes('/scheduler/') || id.includes('/zustand/') ) { return 'vendor-framework' } if (id.includes('/axios/')) { return 'vendor-network' } if ( id.includes('/three/') || id.includes('/@react-three/fiber/') || id.includes('/@react-three/drei/') ) { return 'vendor-three' } return undefined } // https://vite.dev/config/ export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), '') const backendTarget = String(env.VITE_DEV_PROXY_TARGET || 'http://127.0.0.1:8000').trim() return { plugins: [react()], build: { rollupOptions: { output: { manualChunks(id) { return resolveVendorChunk(id) }, }, }, }, server: { proxy: { '/api': { target: backendTarget, changeOrigin: true, }, '/public': { target: backendTarget, changeOrigin: true, }, '/ws/monitor': { target: backendTarget, changeOrigin: true, ws: true, }, }, }, } })