Ответ
Обычно проект собирается в один главный бандл (main.js/chunk.js). Однако, если используется code-splitting (например, через динамические импорты import() или разделение по роутам), Webpack/Rollup/Vite могут создавать несколько бандлов для оптимизации загрузки.
Пример с динамическим импортом:
// Ленивая загрузка компонента
const LazyComponent = React.lazy(() => import('./LazyComponent'));
Нюансы:
- Бандлы могут дробиться по vendor (node_modules), асинхронным чанкам или ручным настройкам в конфиге.
- В SPA часто 1 основной бандл + асинхронные чанки.
- В SSR/Micro-frontends количество может быть больше.
Проверить можно через webpack-bundle-analyzer или в папке dist/ после сборки.