This commit is contained in:
ct
2025-07-15 04:49:58 +08:00
parent f718bb4aaa
commit 23e72d238c

View File

@@ -39,64 +39,79 @@ export default defineConfig({
build: { build: {
rollupOptions: { rollupOptions: {
output: { output: {
manualChunks: (id) => { manualChunks: {
// Skip manual chunks for SSR builds to avoid conflicts // React MUST be first and separate to avoid dependency issues
if (process.env.NODE_ENV === 'development' && id.includes('ssr')) { 'react-vendor': ['react', 'react-dom'],
return;
}
// React core - keep separate and first // Heavy libraries that can be safely separated
if (id.includes('react') || id.includes('react-dom')) { 'ffmpeg': ['@ffmpeg/ffmpeg', '@ffmpeg/util'],
return 'react-vendor'; 'motion': ['motion'],
} 'canvas': ['konva', 'react-konva', 'react-konva-utils'],
'charts': ['recharts'],
// Heavy libraries // UI libraries that depend on React
if (id.includes('@ffmpeg')) { 'radix-ui': [
return 'ffmpeg'; '@radix-ui/react-accordion',
} '@radix-ui/react-alert-dialog',
if (id.includes('motion')) { '@radix-ui/react-aspect-ratio',
return 'motion'; '@radix-ui/react-avatar',
} '@radix-ui/react-checkbox',
if (id.includes('konva')) { '@radix-ui/react-collapsible',
return 'canvas'; '@radix-ui/react-context-menu',
} '@radix-ui/react-dialog',
if (id.includes('recharts')) { '@radix-ui/react-dropdown-menu',
return 'charts'; '@radix-ui/react-hover-card',
} '@radix-ui/react-label',
'@radix-ui/react-menubar',
// Radix UI components '@radix-ui/react-navigation-menu',
if (id.includes('@radix-ui')) { '@radix-ui/react-popover',
return 'radix-ui'; '@radix-ui/react-progress',
} '@radix-ui/react-radio-group',
'@radix-ui/react-scroll-area',
'@radix-ui/react-select',
'@radix-ui/react-separator',
'@radix-ui/react-slider',
'@radix-ui/react-slot',
'@radix-ui/react-switch',
'@radix-ui/react-tabs',
'@radix-ui/react-toggle',
'@radix-ui/react-toggle-group',
'@radix-ui/react-tooltip'
],
// Form libraries // Form libraries
if (id.includes('react-hook-form') || id.includes('@hookform') || id.includes('zod')) { 'forms': ['react-hook-form', '@hookform/resolvers', 'zod'],
return 'forms';
}
// UI utilities // UI utilities
if (id.includes('tailwind-merge') || id.includes('class-variance-authority') || 'ui-utils': [
id.includes('clsx') || id.includes('lucide-react') || id.includes('sonner') || 'tailwind-merge',
id.includes('cmdk') || id.includes('next-themes')) { 'class-variance-authority',
return 'ui-utils'; 'clsx',
} 'lucide-react',
'sonner',
'cmdk',
'next-themes'
],
// Other React components // Other React components
if (id.includes('react-day-picker') || id.includes('react-error-boundary') || 'react-components': [
id.includes('embla-carousel-react') || id.includes('react-resizable-panels')) { 'react-day-picker',
return 'react-components'; 'react-error-boundary',
} 'embla-carousel-react',
'react-resizable-panels'
],
// Non-React utilities // Non-React utilities
if (id.includes('date-fns') || id.includes('axios') || id.includes('mitt') || 'utils': [
id.includes('zustand') || id.includes('embla-carousel-autoplay')) { 'date-fns',
return 'utils'; 'axios',
} 'mitt',
'zustand',
'embla-carousel-autoplay'
],
// Inertia // Inertia
if (id.includes('@inertiajs')) { 'inertia': ['@inertiajs/react']
return 'inertia';
}
} }
} }
}, },