dashboard-nanobot/frontend/vite.config.ts

81 lines
1.7 KiB
TypeScript

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,
},
},
},
}
})