@@ -124,14 +124,22 @@ export default defineConfig(({ mode }) => ({
124124 [ 'cards-workloads' , [ '/src/components/cards/workload-detection/' , '/src/components/cards/workload-monitor/' ] ] ,
125125 [ 'cards-storage' , [ '/src/components/cards/vitess_status/' , '/src/components/cards/minio_status/' , '/src/components/cards/etcd_status/' ] ] ,
126126 [ 'cards-messaging' , [ '/src/components/cards/kafka_status/' , '/src/components/cards/rabbitmq_status/' , '/src/components/cards/redis_status/' ] ] ,
127+ // Split cards-misc further to reduce bundle size
128+ [ 'cards-monitoring' , [ '/src/components/cards/prometheus_status/' , '/src/components/cards/grafana_status/' , '/src/components/cards/alertmanager_status/' ] ] ,
129+ [ 'cards-cluster' , [ '/src/components/cards/cluster_health/' , '/src/components/cards/cluster_capacity/' , '/src/components/cards/cluster_nodes/' ] ] ,
130+ [ 'cards-cost' , [ '/src/components/cards/cost/' , '/src/components/cards/kubecost_status/' ] ] ,
131+ [ 'cards-data' , [ '/src/components/cards/postgresql_status/' , '/src/components/cards/mysql_status/' , '/src/components/cards/mongodb_status/' ] ] ,
127132 [ 'cards-misc' , [ '/src/components/cards/' ] ] ,
128133 // Split drilldown views by type to reduce chunk size
129134 [ 'drilldown-k8s' , [ '/src/components/drilldown/views/PodLogs' , '/src/components/drilldown/views/PodEvents' , '/src/components/drilldown/views/PodTerminal' , '/src/components/drilldown/views/NamespaceDetails' ] ] ,
130135 [ 'drilldown-data' , [ '/src/components/drilldown/views/LogViewer' , '/src/components/drilldown/views/MetricsViewer' , '/src/components/drilldown/views/EventTimeline' ] ] ,
136+ [ 'drilldown-ui' , [ '/src/components/drilldown/DrillDownModal' , '/src/components/drilldown/DrillDownHeader' , '/src/components/drilldown/DrillDownStack' ] ] ,
131137 [ 'drilldown' , [ '/src/components/drilldown/' ] ] ,
132138 // Dashboard and layout split by concern
133139 [ 'dashboard-customizer' , [ '/src/components/dashboard/customizer/' , '/src/components/dashboard/shared/cardCatalog' ] ] ,
140+ [ 'dashboard-grid' , [ '/src/components/dashboard/CardGrid' , '/src/components/dashboard/DashboardGrid' ] ] ,
134141 [ 'dashboard-core' , [ '/src/components/dashboard/' , '/src/lib/dashboards/' , '/src/lib/unified/dashboard/' ] ] ,
142+ [ 'layout-header' , [ '/src/components/layout/Header' , '/src/components/layout/TopBar' , '/src/components/layout/UserMenu' ] ] ,
135143 [ 'layout-sidebar' , [ '/src/components/layout/Sidebar' , '/src/components/layout/Navigation' , '/src/components/layout/MobileMenu' ] ] ,
136144 [ 'layout-shell' , [ '/src/components/layout/' ] ] ,
137145 [ 'auth-core' , [ '/src/lib/auth' ] ] ,
@@ -141,8 +149,10 @@ export default defineConfig(({ mode }) => ({
141149 [ 'contexts-providers' , [ '/src/contexts/' , '/src/hooks/useDrillDown' , '/src/hooks/useRewards' , '/src/hooks/useMissions' , '/src/hooks/useGlobalFilters' ] ] ,
142150 [ 'hooks-data' , [ '/src/hooks/useCached' , '/src/hooks/useCache' , '/src/hooks/useCluster' , '/src/hooks/useDashboard' ] ] ,
143151 [ 'lib-cache' , [ '/src/lib/cache/' ] ] ,
152+ [ 'lib-utils' , [ '/src/lib/utils' , '/src/lib/cn.ts' , '/src/lib/constants.ts' ] ] ,
144153 [ 'theme-system' , [ '/src/hooks/useTheme' , '/src/hooks/useBranding' ] ] ,
145- // Split app shell to reduce size
154+ // Split app shell to reduce massive app-routes chunk
155+ [ 'app-router' , [ '/src/components/router/' , '/src/lib/router/' ] ] ,
146156 [ 'app-routes' , [ '/src/App.tsx' ] ] ,
147157 [ 'app-shell' , [ '/src/hooks/usePersistedSettings' , '/src/hooks/useAppInit' ] ] ,
148158 [ 'i18n-app' , [ '/src/lib/i18n.ts' , '/src/locales/' ] ] ,
@@ -153,25 +163,40 @@ export default defineConfig(({ mode }) => ({
153163 if ( ! id . includes ( 'node_modules' ) ) return
154164 // React core (split scheduler separately to reduce main react bundle)
155165 if ( id . includes ( '/scheduler/' ) ) return 'react-scheduler-vendor'
156- if ( id . includes ( '/react/' ) || id . includes ( '/react-dom/' ) || id . includes ( '/react-router' ) || id . includes ( '/react-reconciler/' ) ) return 'react-vendor'
157- // three.js ecosystem (split into smaller chunks)
166+ if ( id . includes ( '/react-dom/client' ) ) return 'react-dom-client-vendor'
167+ if ( id . includes ( '/react-dom/' ) ) return 'react-dom-vendor'
168+ if ( id . includes ( '/react-router-dom/' ) ) return 'react-router-dom-vendor'
169+ if ( id . includes ( '/react-router/' ) ) return 'react-router-vendor'
170+ if ( id . includes ( '/react-reconciler/' ) ) return 'react-reconciler-vendor'
171+ if ( id . includes ( '/react/' ) ) return 'react-vendor'
172+ // three.js ecosystem (split into smaller chunks to reduce three-core and three-drei)
158173 if ( id . includes ( '/three-stdlib/' ) ) return 'three-stdlib-vendor'
159174 if ( id . includes ( '/@react-three/fiber/' ) ) return 'three-fiber-vendor'
160- if ( id . includes ( '/@react-three/drei/' ) ) return 'three-drei-vendor'
175+ // Split drei into sub-chunks to reduce 304KB chunk
176+ if ( id . includes ( '/@react-three/drei/' ) && id . includes ( '/core/' ) ) return 'drei-core-vendor'
177+ if ( id . includes ( '/@react-three/drei/' ) && id . includes ( '/web/' ) ) return 'drei-web-vendor'
178+ if ( id . includes ( '/@react-three/drei/' ) ) return 'drei-helpers-vendor'
161179 if ( id . includes ( '/@react-three/' ) || id . includes ( '/zustand/' ) || id . includes ( '/stats-gl/' ) ) return 'three-react-vendor'
180+ // Split three.js core modules to reduce 708KB chunk
162181 if ( id . includes ( '/three/build/three.module.js' ) ) return 'three-core-vendor'
182+ if ( id . includes ( '/three/src/math/' ) ) return 'three-math-vendor'
183+ if ( id . includes ( '/three/src/loaders/' ) ) return 'three-loaders-vendor'
163184 if ( id . includes ( '/three/' ) ) return 'three-extras-vendor'
164185 // Chart libraries
165186 if ( id . includes ( '/zrender/' ) ) return 'zrender-vendor'
166187 if ( id . includes ( '/echarts-for-react/' ) ) return 'echarts-react-vendor'
167188 if ( id . includes ( '/echarts/' ) ) return 'echarts-vendor'
168189 if ( id . includes ( '/framer-motion/' ) ) return 'motion-vendor'
169- // Terminal (split addons from core)
190+ // Terminal (split addons from core to reduce xterm-core 336KB chunk)
191+ if ( id . includes ( '/@xterm/addon-fit/' ) ) return 'xterm-addon-fit-vendor'
192+ if ( id . includes ( '/@xterm/addon-web-links/' ) ) return 'xterm-addon-links-vendor'
170193 if ( id . includes ( '/@xterm/addon-' ) ) return 'xterm-addon-vendor'
171194 if ( id . includes ( '/@xterm/xterm/' ) ) return 'xterm-core-vendor'
172195 if ( id . includes ( '/@xterm/' ) ) return 'xterm-vendor'
173196 // UI libraries
174197 if ( id . includes ( '/lucide-react/' ) ) return 'lucide-vendor'
198+ if ( id . includes ( '/@dnd-kit/core/' ) ) return 'dnd-core-vendor'
199+ if ( id . includes ( '/@dnd-kit/sortable/' ) ) return 'dnd-sortable-vendor'
175200 if ( id . includes ( '/@dnd-kit/' ) ) return 'dnd-vendor'
176201 if (
177202 id . includes ( '/react-markdown/' ) ||
@@ -207,6 +232,19 @@ export default defineConfig(({ mode }) => ({
207232 if ( id . includes ( '/dompurify/' ) ) return 'sanitize-vendor'
208233 if ( id . includes ( '/zod/' ) ) return 'schema-vendor'
209234 if ( id . includes ( '/@tanstack/react-virtual/' ) ) return 'virtual-vendor'
235+ // Split date/time libraries
236+ if ( id . includes ( '/date-fns/' ) ) return 'date-vendor'
237+ if ( id . includes ( '/dayjs/' ) ) return 'dayjs-vendor'
238+ // Split utility libraries to reduce generic vendor chunk
239+ if ( id . includes ( '/lodash/' ) || id . includes ( '/lodash-es/' ) ) return 'lodash-vendor'
240+ if ( id . includes ( '/axios/' ) ) return 'axios-vendor'
241+ if ( id . includes ( '/clsx/' ) || id . includes ( '/classnames/' ) ) return 'classnames-vendor'
242+ if ( id . includes ( '/uuid/' ) ) return 'uuid-vendor'
243+ // Split state management
244+ if ( id . includes ( '/jotai/' ) ) return 'jotai-vendor'
245+ if ( id . includes ( '/immer/' ) ) return 'immer-vendor'
246+ // Split async utilities
247+ if ( id . includes ( '/p-limit/' ) || id . includes ( '/p-queue/' ) ) return 'async-vendor'
210248 return 'vendor'
211249 } ,
212250 } ,
0 commit comments