Доступен Vite 8.0: Vite на базе Rolldown!
3 декабря 2025

TL;DR: Вышла первая бета Vite 8 на базе Rolldown. Vite 8 обеспечивает значительно более быстрые продакшен-сборки и открывает путь к будущим улучшениям. Попробовать можно, обновив vite до версии 8.0.0-beta.0 и прочитав руководство по миграции.
Мы рады представить первую бета-версию Vite 8. Этот релиз унифицирует базовый инструментарий, приносит более согласованное поведение и ощутимо ускоряет сборку. Теперь Vite использует Rolldown в качестве бандлера, заменив прежнюю связку esbuild + Rollup.
Новый бандлер для веба
Раньше Vite использовал два разных бандлера, чтобы удовлетворить разные требования разработки и продакшена:
- esbuild — для быстрой компиляции во время разработки
- Rollup — для бандлинга, чанкинга и оптимизации продакшен-сборок
Такой подход позволял Vite сосредоточиться на удобстве разработчика и координации процессов, не тратя силы на создание собственного парсера и бандлера. Однако поддержка двух разных конвейеров сборки создавала проблемы: трансформация кода работала по-разному, системы плагинов отличались, а количество «склеивающего» кода для выравнивания поведения в режиме разработки и продакшена постоянно увеличивалось.
Для решения этой проблемы команда VoidZero создала Rolldown — бандлер нового поколения, специально предназначенный для использования в Vite. Он спроектирован с учётом:
- Производительности: Rolldown написан на Rust и работает на нативной скорости. Он достигает уровня esbuild и в 10–30 раз быстрее Rollup.
- Совместимости: Rolldown поддерживает тот же API плагинов, что Rollup и Vite. Большинство существующих Vite-плагинов работают в Vite 8 без изменений.
- Новых возможностей: Rolldown открывает перед Vite продвинутые фичи, среди которых полноценный bundle-режим, более гибкое управление разделением чанков, персистентный кэш на уровне модулей, Module Federation и многое другое.
Унификация инструментария
Замена бандлера в Vite даёт эффект далеко за пределами скорости. Бандлеры используют парсеры, резолверы, трансформеры и минификаторы. Rolldown для этих задач использует Oxc — ещё один проект под руководством VoidZero.
Таким образом, Vite становится точкой входа в полностью унифицированный инструментарий, поддерживаемый одной командой: инструмент сборки (Vite) + бандлер (Rolldown) + компилятор (Oxc).
Такое выравнивание гарантирует одинаковое поведение на всём стеке и позволяет быстро внедрять новые возможности языка по мере развития JavaScript. Кроме того, открываются улучшения, которые раньше были невозможны в рамках одного Vite. Например, мы можем использовать семантический анализ Oxc для более качественного tree-shaking в Rolldown.
Как Vite мигрировал на Rolldown
Миграция Vite на использование Rolldown в качестве базы — это фундаментальное изменение. Поэтому наша команда предприняла продуманные шаги для её реализации, не жертвуя стабильностью или совместимостью с экосистемой.
Сначала был выпущен в качестве технического превью отдельный пакет rolldown-vite. Это позволило нам работать с ранними последователями, не затрагивая стабильную версию Vite. Первопроходцы получили выгоду от прироста производительности Rolldown, одновременно предоставляя ценную обратную связь. Основные моменты:
- Время продакшен-сборки в Linear сократилось с 46 секунд до 6 секунд
- Ramp сократил время своей сборки на 57%
- Mercedes-Benz.io сократил время сборки до 38%
- Beehiiv сократил время сборки на 64%
Затем мы настроили набор тестов для проверки ключевых плагинов Vite в работе с rolldown-vite. Эта задача CI помогала нам рано выявлять регрессии и проблемы совместимости, особенно для фреймворков и метафреймворков, таких как SvelteKit, react-router и Storybook.
Наконец, мы создали слой совместимости, чтобы помочь разработчикам перейти с опций Rollup и esbuild на соответствующие опции Rolldown.
В результате для всех открылся плавный путь миграции на Vite 8.
Миграция на Vite 8 Beta
Поскольку Vite 8 затрагивает основное поведение сборки, мы сосредоточились на сохранении неизменным API конфигурации и хуков плагинов. Мы создали руководство по миграции, чтобы помочь вам с обновлением.
Доступны два пути обновления:
- Прямое обновление: Обновите
viteвpackage.jsonи запустите обычные команды разработки и сборки. - Постепенная миграция: Перейдите с Vite 7 на пакет
rolldown-vite, а затем на Vite 8. Это позволяет выявить несовместимости или проблемы, связанные исключительно с Rolldown, без других изменений в Vite. (Рекомендуется для крупных или сложных проектов)
[!ВАЖНО] Если вы полагаетесь на конкретные опции Rollup или esbuild, вам, возможно, потребуется внести некоторые корректировки в конфигурацию Vite. Пожалуйста, обратитесь к руководству по миграции для получения подробных инструкций и примеров. Как и со всеми нестабильными мажорными релизами, после обновления рекомендуется провести тщательное тестирование, чтобы убедиться, что всё работает как ожидается. Пожалуйста, не забудьте сообщить о любых проблемах.
Если вы используете фреймворк или инструмент, который использует Vite в качестве зависимости, например Astro, Nuxt или Vitest, вам необходимо переопределить зависимость vite в вашем package.json. Способ сделать это немного различается в зависимости от вашего менеджера пакетов:
{
"overrides": {
"vite": "8.0.0-beta.0"
}
}{
"resolutions": {
"vite": "8.0.0-beta.0"
}
}{
"pnpm": {
"overrides": {
"vite": "8.0.0-beta.0"
}
}
}{
"overrides": {
"vite": "8.0.0-beta.0"
}
}После добавления этих переопределений переустановите зависимости и запустите сервер разработки или соберите проект как обычно.
Дополнительные возможности в Vite 8
Помимо поставки с Rolldown, Vite 8 включает:
- Встроенная поддержка
pathsиз tsconfig: Разработчики могут включить её, установивresolve.tsconfigPathsвtrue. Эта функция имеет небольшие затраты на производительность и по умолчанию отключена. - Поддержка
emitDecoratorMetadata: Vite 8 теперь имеет встроенную автоматическую поддержку опции TypeScriptemitDecoratorMetadata. Подробнее смотрите на странице Возможности.
Взгляд в будущее
Скорость всегда была определяющей чертой Vite. Интеграция с Rolldown и, как следствие, с Oxc означает, что разработчики на JavaScript получают выгоду от скорости Rust. Обновление до Vite 8 должно привести к приросту производительности просто за счёт использования Rust.
Мы также с нетерпением ждём скорейшего выпуска режима полной сборки (Full Bundle Mode) в Vite, который кардинально улучшает скорость сервера разработки для крупных проектов. Предварительные результаты показывают ускорение запуска сервера разработки в 3 раза, ускорение полной перезагрузки на 40% и в 10 раз меньше сетевых запросов.
Другой определяющей чертой Vite является экосистема плагинов. Мы хотим, чтобы разработчики на JavaScript продолжали расширять и настраивать Vite на JavaScript — языке, с которым они знакомы, — при этом получая выгоду от производительности Rust. Наша команда сотрудничает с командой VoidZero, чтобы ускорить использование JavaScript-плагинов в этих основанных на Rust системах.
Предстоящие оптимизации, которые в настоящее время являются экспериментальными:
- Прямая передача AST (Raw AST transfer). Позволит JavaScript-плагинам получать доступ к AST, созданному в Rust, с минимальными накладными расходами.
- Нативные преобразования MagicString (Native MagicString transforms). Простые пользовательские преобразования с логикой на JavaScript, но вычислениями в Rust.
Свяжитесь с нами
Если вы попробовали Vite 8 beta, мы будем рады услышать ваши отзывы! Пожалуйста, сообщайте о любых проблемах или делитесь своим опытом:
- Discord: Присоединяйтесь к нашему сообществу для обсуждений в реальном времени
- GitHub: Поделитесь мнением в обсуждениях на GitHub
- Проблемы (Issues): Сообщайте об ошибках и регрессиях в репозитории rolldown-vite
- Успехи (Wins): Расскажите о своём улучшенном времени сборки в репозитории rolldown-vite-perf-wins
Мы ценим все отчёты и примеры для воспроизведения ошибок. Они помогают нам двигаться к выпуску стабильной версии 8.0.0.