
Vite 8 – Rolldown bundler a přechod z Vite 7
Co přináší Vite 8, jak funguje nový Rust bundler Rolldown a jak migrovat projekt z Vite 7 na Vite 8.
Vite 8 přináší zásadní změnu v architektuře – místo dosavadní kombinace esbuild (dev) + Rollup (build) používá jednotný bundler Rolldown, napsaný v Rustu. Výsledkem jsou rychlejší buildy, menší rozdíly mezi dev a production prostředím a lepší konsistence.
Co je Rolldown
Rolldown je bundler napsaný v Rustu, kompatibilní s Rollup API. Nahrazuje dvě dosavadní závislosti Vite:
- esbuild – používaný ve Vite 2–7 pro transformaci a optimalisaci závislostí v dev režimu
- Rollup – používaný pro production build
Díky tomu, že Rolldown zvládá obě role, odpadají problémy s nekonsistencí mezi dev a build výstupem. Zároveň je díky Rustu výrazně rychlejší než JavaScript-based Rollup.
Co je nového ve Vite 8
| Funkce | Vite 7 | Vite 8 |
|---|---|---|
| Bundler (dev) | esbuild | Rolldown |
| Bundler (build) | Rollup | Rolldown |
| Konsistence dev/build | Občasné rozdíly | Stejný bundler |
| Rychlost buildu | Základ | ~30–40 % rychlejší |
| Node.js | ≥ 18 | ≥ 18 |
| Plugin API | Rollup-kompatibilní | Rollup-kompatibilní |
Další změny
optimizeDeps.esbuildOptionsje deprecated – nahrazuje hooptimizeDeps.rolldownOptionsbuild.rollupOptionsje deprecated – nahrazuje hobuild.rolldownOptionsinlineDynamicImportsje deprecated – nově se používácodeSplitting: false- CSS minifikace defaultně používá Lightning CSS místo esbuildu
- Rolldown je přísnější ohledně chybějících exportů – místo varování může vyhodit chybu
Migrace z Vite 7 na Vite 8
1. Aktualisace závislosti
npm install -D vite@beta
# nebo
pnpm add -D vite@beta
Jakmile bude Vite 8 stable, stačí vite@latest.
2. Kontrola pluginů
Většina Rollup pluginů funguje i s Rolldown. Zkontrolujte ale, zda vaše pluginy nepodporují Vite 8 explicitně – mohou se objevit peer dependency varování. Pokud build proběhne úspěšně, je to obvykle v pořádku.
3. Oprava deprecated možností
Pokud ve vite.config používáte:
// Vite 7 (deprecated ve Vite 8)
export default {
optimizeDeps: {
esbuildOptions: { /* ... */ }
},
build: {
rollupOptions: {
output: {
inlineDynamicImports: true
}
}
}
}
Přepište na:
// Vite 8
export default {
optimizeDeps: {
rolldownOptions: { /* ... */ }
},
build: {
rolldownOptions: {
output: {
codeSplitting: false // místo inlineDynamicImports
}
}
}
}
4. Chybějící exporty
Rolldown je přísnější než Rollup. Pokud váš kód importuje proměnnou, která reálně neexistuje (např. env proměnné, které nemáte v .env), Vite 8 vyhodí chybu MISSING_EXPORT místo tichého ignorování.
Řešení: zajistěte, aby všechny importované env proměnné měly alespoň placeholder hodnotu v .env souboru.
Jaký je reálný rozdíl v rychlosti
Na reálném SvelteKit projektu s ~1100 stránkami (prerendered) vypadá porovnání takto:
| Metrika | Vite 7 | Vite 8 |
|---|---|---|
| Celkový build | ~25 s | ~15 s |
vite build samotný | ~12 s | ~8 s |
| Zrychlení | – | ~36 % |
Největší úspora je v bundlování – Rolldown zpracovává moduly rychleji než Rollup. Fáze jako prerendering nebo post-build skripty zůstávají stejné.
Na co si dát pozor
- Beta stav – Vite 8 je zatím v beta versi, mohou se objevit breaking changes
- Peer dependency varování – pluginy jako
@sveltejs/vite-plugin-svelte,@tailwindcss/vitenebovite-plugin-kit-routeszatím nemusí deklarovat podporu pro Vite 8 - Přísnější bundler – Rolldown netoleruje některé vzory, které Rollup tiše přeskočil (chybějící exporty, neplatné importy)
- Nové deprecation –
esbuildOptionsainlineDynamicImportsbudou v budoucnu odstraněny
Je to konec esbuildu?
Ne úplně – ale jeho role ve Vite skončila. esbuild byl klíčový pro rychlost Vite v dev režimu od verse 2. Transformoval TypeScript, JSX a optimalisoval závislosti mnohem rychleji než jakýkoli JavaScript-based nástroj. Bez něj by Vite nikdy nebyl tak rychlý.
Rolldown ale dělá totéž a navíc zvládá i production build, takže Vite už esbuild nepotřebuje. Konfigurace optimizeDeps.esbuildOptions je ve Vite 8 deprecated a v budoucí versi bude odstraněna.
esbuild jako projekt ale nezaniká. Stále ho používají jiné nástroje (např. tsup pro bundlování knihoven nebo tsx pro spouštění TypeScriptu) a jeho API zůstává stabilní. Jde spíš o to, že Vite přerostl architekturu „esbuild pro dev, Rollup pro build” a Rolldown ji nahrazuje čistším řešením.
Doporučení
Pro produkční projekty doporučuji vytvořit testovací branch, spustit build a ověřit, že vše funguje. Pokud build projde bez chyb (varování jsou OK), je přechod na Vite 8 bezpečný a přináší měřitelné zrychlení.
# Testovací branch
git checkout -b try/vite-8
pnpm add -D vite@beta
pnpm build
Pokud build selže na MISSING_EXPORT, doplňte chybějící env proměnné. Pokud selže na nekompatibilním pluginu, počkejte na aktualisaci pluginu nebo stable release Vite 8.
Co si myslíte o tomto článku?
Diskuse
Související články
Fresh: Deno framework s islands architekturou
Porovnání Fresh frameworku s React/Next.js a Svelte/SvelteKit - build proces, runtime, reaktivita a šablony.