File size: 2,708 Bytes
dc06ee7 c9b5d82 dc06ee7 c9b5d82 5ff9ee8 cd3a8eb 7e03dcc d2ce540 7e03dcc 47941b2 d2b4ed5 47941b2 1f688ca 47941b2 7e03dcc 593d58c 15aa24f 593d58c 15aa24f 214b2a7 593d58c 5ff9ee8 93e01b6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
import { defineConfig } from 'vite'
import path from 'path'
import { webuiPrefix } from '@/lib/constants'
import react from '@vitejs/plugin-react-swc'
import tailwindcss from '@tailwindcss/vite'
// https://vite.dev/config/
export default defineConfig({
plugins: [react(), tailwindcss()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
}
},
// base: import.meta.env.VITE_BASE_URL || '/webui/',
base: webuiPrefix,
build: {
outDir: path.resolve(__dirname, '../lightrag/api/webui'),
emptyOutDir: true,
chunkSizeWarningLimit: 1000,
rollupOptions: {
output: {
// Manual chunking strategy
manualChunks: {
// Group React-related libraries into one chunk
'react-vendor': ['react', 'react-dom', 'react-router-dom'],
// Group graph visualization libraries into one chunk
'graph-vendor': ['sigma', 'graphology', '@react-sigma/core'],
// Group UI component libraries into one chunk
'ui-vendor': ['@radix-ui/react-dialog', '@radix-ui/react-popover', '@radix-ui/react-select', '@radix-ui/react-tabs'],
// Group utility libraries into one chunk
'utils-vendor': ['axios', 'i18next', 'zustand', 'clsx', 'tailwind-merge'],
// Separate feature modules
'feature-graph': ['./src/features/GraphViewer'],
'feature-documents': ['./src/features/DocumentManager'],
'feature-retrieval': ['./src/features/RetrievalTesting'],
// Mermaid-related modules
'mermaid-vendor': ['mermaid'],
// Markdown-related modules
'markdown-vendor': [
'react-markdown',
'rehype-react',
'remark-gfm',
'remark-math',
'react-syntax-highlighter'
]
},
// Ensure consistent chunk naming format
chunkFileNames: 'assets/[name]-[hash].js',
// Entry file naming format
entryFileNames: 'assets/[name]-[hash].js',
// Asset file naming format
assetFileNames: 'assets/[name]-[hash].[ext]'
}
}
},
server: {
proxy: import.meta.env.VITE_API_PROXY === 'true' && import.meta.env.VITE_API_ENDPOINTS ?
Object.fromEntries(
import.meta.env.VITE_API_ENDPOINTS.split(',').map(endpoint => [
endpoint,
{
target: import.meta.env.VITE_BACKEND_URL || 'http://localhost:9621',
changeOrigin: true,
rewrite: endpoint === '/api' ?
(path) => path.replace(/^\/api/, '') :
endpoint === '/docs' || endpoint === '/openapi.json' ?
(path) => path : undefined
}
])
) : {}
}
})
|