Вышел Vite 8 — самое крупное изменение архитектуры с версии 2. Главное: под капотом теперь работает единственный бандлер Rolldown, написанный на Rust. Раньше их было два — esbuild для разработки и Rollup для финальной сборки. Теперь один инструмент делает всё.

Зачем меняли?

Два бандлера — это два набора правил, два плагинных API и куча «склеивающего» кода между ними. Со временем накапливались мелкие расхождения: одно и то же преобразование могло давать чуть разные результаты в dev-режиме и в продакшн-сборке.

Rolldown поддерживает тот же плагинный API, что и Rollup, поэтому большинство существующих плагинов работают без изменений.

Насколько быстро?

В бенчмарках Rolldown показывает 10–30x ускорение по сравнению с Rollup, достигая скорости esbuild. Реальные цифры от компаний, которые тестировали превью:

  • Linear — с 46 сек до 6 сек (−87%)
  • Beehiiv — −64%
  • Ramp — −57%
  • Mercedes-Benz.io — −38%

Чем больше проект — тем заметнее эффект.

Что ещё нового

Встроенная поддержка paths из tsconfig

Раньше алиасы приходилось дублировать в конфиге Vite. Теперь можно включить автоматическую подхватку из tsconfig.json одной строчкой:

// vite.config.ts
export default defineConfig({
  resolve: {
    tsconfigPaths: true, // читает paths из tsconfig.json
  },
})

Если в tsconfig.json написано:

{
  "compilerOptions": {
    "paths": {
      "@/*": ["./src/*"]
    }
  }
}

...то импорты вида import Button from '@/components/Button' заработают без дополнительной настройки. По умолчанию опция выключена — есть небольшой оверхед на производительность.

Пробрасывание консоли браузера в терминал

Ошибки из console.error в браузере теперь видны прямо в CLI. Полезно при работе с AI-агентами и автоматизации. Если Vite определяет, что запущен внутри coding-агента — активируется автоматически.

// vite.config.ts
export default defineConfig({
  server: {
    forwardConsole: true,
  },
})

Встроенные Devtools

Раньше ставились отдельным плагином, теперь включаются одной строчкой в конфиге:

// vite.config.ts
export default defineConfig({
  devtools: true,
})

emitDecoratorMetadata без плагинов

Нужно для некоторых фреймворков вроде NestJS или TypeORM. Раньше требовал сторонний Babel-плагин. Теперь Vite 8 поддерживает это из коробки — достаточно включить опции в tsconfig.json:

{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}

WebAssembly в SSR

Импорты .wasm?init теперь работают и на сервере — не только в браузере.

Как обновиться

Для большинства проектов — просто обновить версию. Vite 8 умеет автоматически конвертировать старые настройки esbuild и rollupOptions в эквиваленты для Rolldown.

npm install vite@8 --save-dev

Для больших и сложных проектов рекомендуют двухшаговый путь: сначала переключиться с vite на rolldown-vite в рамках Vite 7, убедиться что всё работает, и только потом ставить восьмёрку. Так проще понять, какие проблемы от смены бандлера, а какие от других изменений в версии.

Важно: размер пакета вырос

Vite 8 весит примерно на 15 МБ больше Vite 7: ~10 МБ — это lightningcss, который теперь идёт в комплекте вместо опционального peer dependency, ~5 МБ — бинарник Rolldown. Команда обещает работать над оптимизацией.

Требования к Node.js

Те же, что в Vite 7: Node.js 20.19+ или 22.12+. Эти версии поддерживают require(esm) без флагов, что позволяет Vite распространяться только как ESM-пакет.

Приходите на онлайн-курс по Vite 8

Vite 8 — самый быстрый сборщик для фронтенда. Сборка стала в 10–30 раз быстрее. Проект стартует за секунду, изменения в коде видны мгновенно.

Хочу