LightRAG/lightrag_webui/vite.config.ts

75 lines
2.6 KiB
TypeScript
Raw Normal View History

2025-02-09 23:15:26 +08:00
import { defineConfig } from 'vite'
import path from 'path'
import { webuiPrefix } from '@/lib/constants'
2025-02-09 23:15:26 +08:00
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,
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'],
2025-04-22 18:34:30 +08:00
// 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
}
])
) : {}
}
2025-02-10 00:33:39 +08:00
})