Skip to content

Доступен Vite 8.0: Vite на базе Rolldown!

3 декабря 2025

Обложка объявления Vite 8

TL;DR: Вышла первая бета Vite 8 на базе Rolldown. Vite 8 обеспечивает значительно более быстрые продакшен-сборки и открывает путь к будущим улучшениям. Попробовать можно, обновив vite до версии 8.0.0-beta.0 и прочитав руководство по миграции.


Мы рады представить первую бета-версию Vite 8. Этот релиз унифицирует базовый инструментарий, приносит более согласованное поведение и ощутимо ускоряет сборку. Теперь Vite использует Rolldown в качестве бандлера, заменив прежнюю связку esbuild + Rollup.

Новый бандлер для веба

Раньше Vite использовал два разных бандлера, чтобы удовлетворить разные требования разработки и продакшена:

  1. esbuild — для быстрой компиляции во время разработки
  2. 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 конфигурации и хуков плагинов. Мы создали руководство по миграции, чтобы помочь вам с обновлением.

Доступны два пути обновления:

  1. Прямое обновление: Обновите vite в package.json и запустите обычные команды разработки и сборки.
  2. Постепенная миграция: Перейдите с Vite 7 на пакет rolldown-vite, а затем на Vite 8. Это позволяет выявить несовместимости или проблемы, связанные исключительно с Rolldown, без других изменений в Vite. (Рекомендуется для крупных или сложных проектов)

[!ВАЖНО] Если вы полагаетесь на конкретные опции Rollup или esbuild, вам, возможно, потребуется внести некоторые корректировки в конфигурацию Vite. Пожалуйста, обратитесь к руководству по миграции для получения подробных инструкций и примеров. Как и со всеми нестабильными мажорными релизами, после обновления рекомендуется провести тщательное тестирование, чтобы убедиться, что всё работает как ожидается. Пожалуйста, не забудьте сообщить о любых проблемах.

Если вы используете фреймворк или инструмент, который использует Vite в качестве зависимости, например Astro, Nuxt или Vitest, вам необходимо переопределить зависимость vite в вашем package.json. Способ сделать это немного различается в зависимости от вашего менеджера пакетов:

json
{
  "overrides": {
    "vite": "8.0.0-beta.0"
  }
}
json
{
  "resolutions": {
    "vite": "8.0.0-beta.0"
  }
}
json
{
  "pnpm": {
    "overrides": {
      "vite": "8.0.0-beta.0"
    }
  }
}
json
{
  "overrides": {
    "vite": "8.0.0-beta.0"
  }
}

После добавления этих переопределений переустановите зависимости и запустите сервер разработки или соберите проект как обычно.

Дополнительные возможности в Vite 8

Помимо поставки с Rolldown, Vite 8 включает:

  • Встроенная поддержка paths из tsconfig: Разработчики могут включить её, установив resolve.tsconfigPaths в true. Эта функция имеет небольшие затраты на производительность и по умолчанию отключена.
  • Поддержка emitDecoratorMetadata: Vite 8 теперь имеет встроенную автоматическую поддержку опции TypeScript emitDecoratorMetadata. Подробнее смотрите на странице Возможности.

Взгляд в будущее

Скорость всегда была определяющей чертой Vite. Интеграция с Rolldown и, как следствие, с Oxc означает, что разработчики на JavaScript получают выгоду от скорости Rust. Обновление до Vite 8 должно привести к приросту производительности просто за счёт использования Rust.

Мы также с нетерпением ждём скорейшего выпуска режима полной сборки (Full Bundle Mode) в Vite, который кардинально улучшает скорость сервера разработки для крупных проектов. Предварительные результаты показывают ускорение запуска сервера разработки в 3 раза, ускорение полной перезагрузки на 40% и в 10 раз меньше сетевых запросов.

Другой определяющей чертой Vite является экосистема плагинов. Мы хотим, чтобы разработчики на JavaScript продолжали расширять и настраивать Vite на JavaScript — языке, с которым они знакомы, — при этом получая выгоду от производительности Rust. Наша команда сотрудничает с командой VoidZero, чтобы ускорить использование JavaScript-плагинов в этих основанных на Rust системах.

Предстоящие оптимизации, которые в настоящее время являются экспериментальными:

Свяжитесь с нами

Если вы попробовали Vite 8 beta, мы будем рады услышать ваши отзывы! Пожалуйста, сообщайте о любых проблемах или делитесь своим опытом:

Мы ценим все отчёты и примеры для воспроизведения ошибок. Они помогают нам двигаться к выпуску стабильной версии 8.0.0.

Выпущено под лицензией MIT.