Vite 8: единый бандлер на Rust и сборки до 30x быстрее
Vite, популярный инструмент сборки фронтенда от Эвана Ю, выпустил Vite 8.0 — самое значимое архитектурное изменение со времён Vite 2. Полная миграция с двухбандлерной схемы на Rolldown — единый бандлер, написанный на Rust.
С самых ранних версий Vite опирался на два отдельных бандлера: esbuild для быстрой компиляции при разработке и Rollup для оптимизированных production-сборок. Поддержка двух отдельных пайплайнов трансформации означала две системы плагинов, растущий объём связующего кода и накопление edge-кейсов (нестандартных ситуаций) вокруг несовместимой обработки модулей. Vite 8 решает эту проблему, заменяя оба бандлера на Rolldown. Скорость сборки при этом вырастает в 10–30 раз при полной совместимости с существующей экосистемой плагинов Vite.
Реальные показатели, о которых сообщали в бета-периоде, впечатляют. В Linear время production-сборки упало с 46 до 6 секунд, Ramp зафиксировали сокращение на 57%, Beehiiv — на 64%. На Hacker News один из разработчиков поделился похожим опытом:
Vite 8 — это довольно невероятно. Мы увидели примерно 8-кратное улучшение (4 мин → 30 с) в нашей production-сборке, и это было почти drop-in заменой (без изменений в коде). Поздравляю (и спасибо!) команду Vite!
Другой разработчик сообщил, что сборка проекта примерно на миллион строк кода сократилась с 12 минут до 2.
На Reddit в r/rust обсуждение подчеркнуло растущую роль Rust в JavaScript-тулчейне — Rolldown, Oxc и Lightning CSS все написаны на Rust.
Выявлена заметная проблема совместимости между Vite 8 и стратегией разрешения модулей Yarn Plug’n’Play (PnP), особенно на Windows. Команда Vite сигнализировала, что может не поддерживать Yarn PnP в дальнейшем. Текущее обходное решение для затронутых проектов — переключить nodeLinker Yarn на node-modules. При этом теряются преимущества PnP в экономии места на диске и скорости установки.
Помимо интеграции Rolldown, Vite 8 приносит ряд улучшений для разработчиков. Встроенная поддержка tsconfig paths избавляет от необходимости в плагинах-алиасах — достаточно установить resolve.tsconfigPaths в true. Нативная поддержка emitDecoratorMetadata упрощает настройку фреймворков вроде NestJS и Inversify. Новая функция проброса консоли браузера, включаемая через server.forwardConsole, направляет клиентские логи прямо в терминал — особенно полезно при работе с AI-агентами для кодинга. Релиз также включает @vitejs/plugin-react v6, где Babel заменён на Oxc для React Refresh-трансформаций, что уменьшает размер установки.
На фоне конкурентов Vite 8 позиционирует себя как фреймворко-независимую альтернативу Turbopack, который остаётся привязан к экосистеме Next.js. Недавние бенчмарки называют Vite 8 «наиболее сбалансированным вариантом» по холодному старту, HMR (горячей замене модулей) и production-сборкам. Rspack, ещё один бандлер на Rust, предлагает сильную совместимость с Webpack, но уступает Vite в широте экосистемы плагинов.
Для миграции команда рекомендует постепенный подход для крупных проектов. Сначала нужно переключиться на пакет rolldown-vite на Vite 7, чтобы изолировать проблемы, связанные с Rolldown. Затем можно обновляться до Vite 8. Большинство проектов могут обновиться напрямую без изменений конфигурации — встроенный слой совместимости автоматически конвертирует существующие опции esbuild и Rollup. Подробности процесса и breaking changes описаны в полном руководстве по миграции.
Vite — open-source инструмент сборки, который сейчас скачивают более 65 миллионов раз в неделю. На нём работают фреймворки SvelteKit, Nuxt, Astro, React Router и Storybook. Проект поддерживается командой VoidZero.
