perf: code-split vendor chunks to eliminate 500kB bundle warning

Split the single 713kB JS bundle into separate chunks:
- react-vendor: React core (~192kB)
- markdown: react-markdown + remark/rehype + highlight.js (~476kB)
- icons: lucide-react (~6kB)
- ui: Radix UI components
- index: app code (~37kB)

Improves caching (vendor chunks change less often) and eliminates
the Vite chunk size warning.
This commit is contained in:
Nicolas Varrot
2026-02-11 09:21:08 +00:00
parent 604f90257b
commit d7bdf3b9d7

View File

@@ -4,4 +4,24 @@ import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [react(), tailwindcss()],
build: {
rollupOptions: {
output: {
manualChunks(id) {
if (id.includes('node_modules/react-dom') || id.includes('node_modules/react/')) {
return 'react-vendor'
}
if (id.includes('node_modules/react-markdown') || id.includes('node_modules/remark-') || id.includes('node_modules/rehype-') || id.includes('node_modules/unified') || id.includes('node_modules/mdast') || id.includes('node_modules/hast') || id.includes('node_modules/micromark') || id.includes('node_modules/highlight.js')) {
return 'markdown'
}
if (id.includes('node_modules/lucide-react')) {
return 'icons'
}
if (id.includes('node_modules/@radix-ui')) {
return 'ui'
}
},
},
},
},
})