Was ist Vite?
Frontend-Build-Tool von Evan You. Natives-ESM-Dev-Server (Instant-Start) + Rollup-Prod-Builds. Ersetzt webpack für die meisten modernen Projekte.
Was ist Vite?
Vite (ausgesprochen "weet", französisch für "schnell") ist ein modernes Frontend-Build-Tool, geschaffen von Evan You (auch Schöpfer von Vue.js). Es beschleunigt dramatisch die Entwicklungs-Feedback-Schleife, indem Quelldateien während der Entwicklung als native ES-Module ausgeliefert werden und Rollup nutzt wird, um optimierte Bundles für die Produktion zu produzieren. Released 2020 und stabil seit Vite 2.0 (2021), ist Vite das Default-Build-Tool für Vue 3, SvelteKit und Astro geworden und wird zunehmend für React-Projekte gewählt anstelle von Create React App (das deprecated ist).
Der Pitch ist einfach: Cold-Dev-Server-Starts unter einer Sekunde, auch für große Projekte, und Hot-Module-Reload-(HMR-)Updates fühlen sich instantan an, unabhängig von der Projektgröße. Der Grund: Vite shippt deinen Quellcode während der Entwicklung als native ES-Module zum Browser und lässt den Browser die schwere Arbeit der Dependency-Auflösung erledigen. Kein Bundling-Schritt bei jedem Change.
Die Zwei-Modus-Architektur
Vite operiert anders in Dev vs. Production:
Entwicklungs-Modus: natives ESM
Der Dev-Server liefert deine Quelldateien direkt an den Browser als native ES-Module. Der Browser requested App.vue, Vite transformiert es on-the-fly (kompiliert Vue/JSX/TypeScript) und gibt es zurück. Imports werden vom Browser aufgelöst. Kein Bundle wird vorab gebaut.
Die Killer-Optimierung: nur Dateien, die der Browser tatsächlich requested, werden verarbeitet. Wenn du nie /admin besuchst, kompiliert keine dieser Dateien. Deshalb starten auch 10.000-Datei-Projekte instantan.
Dependencies (node_modules) werden mit esbuild (Go-basiert, ~10-100x schneller als JavaScript-Bundler) in eine einzelne ESM-Datei pro Library vor-gebundelt, sodass der Browser nicht 100+ Requests für eine Library macht.
Production-Modus: Rollup-Bundling
Für Production nutzt Vite Rollup, um optimierte Bundles zu produzieren. Code-Splitting, Tree-Shaking, Asset-Hashing, CSS-Extraktion — all die Standard-Produktions-Build-Features. Output ist ein statisches dist/-Verzeichnis, bereit zum Hochladen zu jedem CDN oder Static-Host.
Warum Vite schneller als webpack ist
| Phase | webpack | Vite |
|---|---|---|
| Dev-Cold-Start | 10-60s (vollständiges Bundle) | 0,3-2s (kein Bundle) |
| HMR nach Edit | 1-5s (re-bundle Betroffenes) | 50-200ms (Einzeldatei-Transform) |
| Dependency-Parsing | JS-basiert | esbuild (Go-basiert) |
| Initialer Scope | Ganzes Projekt | Nur requestete Routen |
Das Pattern ist konsistent: webpack macht zu viel Arbeit vorab; Vite verschiebt Arbeit, bis sie gebraucht wird.
Was out-of-the-box funktioniert
- TypeScript (mit
esbuildzur Transpilation; Type-Checking ist separat viatsc --noEmit). - JSX/TSX.
- CSS, CSS-Module, Sass, Less, Stylus.
- PostCSS auto-erkannt aus
postcss.config.js. - Static-Assets (
.png,.svg,.json) direkt importiert. - Environment-Variables via
.env-Dateien (mitVITE_-Präfix, der Client-Code-exponiert wird, zur Sicherheit). - HMR für Vue, React, Svelte, vanilla JS.
- Glob-Imports (
import.meta.glob). - Web-Worker-Imports (
new Worker(new URL(...))).
Das Plugin-Ökosystem
Vite-Plugins nutzen eine Rollup-kompatible Plugin-API, erweitert mit Vite-spezifischen Hooks. Wichtige Plugins:
- @vitejs/plugin-vue, @vitejs/plugin-react — offizielle Framework-Unterstützung.
- @vitejs/plugin-legacy — generiert ein Legacy-Bundle für ältere Browser (kein natives ESM).
- vite-plugin-pwa — Service-Worker-Generierung, Manifest, Offline-Support.
- unplugin-auto-import / unplugin-vue-components — Auto-Imports für häufige Funktionen und Komponenten (großer DX-Gewinn).
- vite-plugin-checker — führt TypeScript und ESLint parallel während Dev aus.
- vite-imagetools — Bild-Optimierung zur Build-Zeit.
Häufige Vite-Fallen
- Process.env funktioniert nicht. Vite nutzt stattdessen
import.meta.envmitVITE_-Präfix. Die Migration von CRA erfordert das Aktualisieren aller Env-Var-Referenzen. - Dynamische Imports brauchen volle Pfade.
import(`./pages/${name}.tsx`)funktioniert nicht wie in webpack. Nutzeimport.meta.globfür dynamische Patterns. - SSR-Setup ist manueller. Vite hat SSR-Support, aber die Framework-Integration liegt bei dir. Nutze Nuxt (Vue), SvelteKit (Svelte), Astro oder Remix für SSR-out-of-the-box.
- esbuild macht kein Type-Checking. Type-Errors werden deinen Dev-Server nicht brechen. Führe
tsc --noEmitin CI aus oder nutze vite-plugin-checker. - Manche webpack-Plugins haben keine Vite-Äquivalente. Nische-Cases (spezifische Module-Federation-Features, ungewöhnliches Asset-Handling) können Workarounds erfordern.
- HMR kann mit Global-State brechen. Wenn dein Code Modul-Level-Globals mutiert, kann HMR veralteten State produzieren. Vermeide entweder das Pattern oder akzeptiere Full-Reload für diese Module.
Vite vs. esbuild vs. Turbopack vs. webpack
- Vite — Dev-Server (natives ESM) + Rollup-basierter Prod-Build. Am besten für die meisten modernen Frontend-Projekte.
- esbuild — purer Bundler (kein Dev-Server). Wird von Vite unter der Haube zur Dependency-Pre-Bundling genutzt. Direkt für Libraries oder Skripte nutzen, nicht volle Apps.
- Turbopack — Next.js' experimenteller Nachfolger zu webpack, in Rust geschrieben. Schneller als webpack, aber an Next.js gebunden. Weniger reif als Vite.
- webpack — der Großvater. Flexibelstes Plugin-Ökosystem, aber langsam für moderne Projekte. Noch okay für Legacy- oder Apps mit ungewöhnlichen webpack-spezifischen Anforderungen.
VoidZero und Vites kommerzielle Zukunft
Evan You startete VoidZero 2024, um das gesamte Vite-Ökosystem (Vite, Vitest, Rolldown, Oxc) zu kommerzialisieren und beschleunigen. Das Unternehmen zielt darauf ab, Enterprise-Tooling und Beratung rund um Vite zu bieten, während der Kern Open Source bleibt. Das signalisiert langfristige Nachhaltigkeit für Vite — es ist kein Nebenprojekt von Vues Schöpfer mehr.
FAQ: Vite
Sollte ich von webpack zu Vite migrieren?
Für die meisten Projekte, ja — die Dev-Experience-Verbesserung ist dramatisch. Die Migrationskosten hängen von deiner webpack-spezifischen Konfig ab. Standard-React/Vue/Svelte-Apps migrieren in 1-3 Tagen. Apps mit Custom-webpack-Plugins, Module-Federation oder schwerer CommonJS-Interop können 1-3 Wochen dauern.
Ist Vite production-ready?
Ja, sehr. Vite ist seit 2.0 (2021) stabil. Große Adopter sind Shopify, GitLab, Cypress, Storybook, Replit. Production-Bundles (via Rollup) sind Battle-Tested.
Funktioniert Vite mit React?
Ja. Nutze @vitejs/plugin-react für Standard-React oder @vitejs/plugin-react-swc für SWC-basierten Fast-Refresh. Die meisten Teams, die von Create React App migrieren, wählen Vite.
Kann Vite Server-Side-Rendering?
Ja — Vite hat SSR-APIs. Aber sie zu integrieren ist aufwändig; für die meisten Teams, nutze ein Meta-Framework, das Vite wrappt (Nuxt, SvelteKit, Astro, Remix, Solid Start).
Was ist Rolldown?
Rolldown ist der Rust-basierte Ersatz für Rollup, den VoidZero baut. Es wird Drop-in-kompatibel mit Rollups Plugin-API sein, aber viel schneller. Wenn stabil, wird Vite Rolldown für Production-Builds nutzen, was die Dev/Prod-Tooling-Diskrepanz (esbuild für Dev, Rollup für Prod) eliminiert.
Wie unterscheidet sich Vite von Vitest?
Vitest ist der Unit-Test-Runner, der Vites Pipeline nutzt (also teilen Tests die gleichen Transforms und Config wie deine App). Vom gleichen Team geschaffen. Drop-in-Ersatz für Jest in Vite-Projekten.
Wie LoadFocus zu Vite-gebauten Apps steht
Apps, die mit Vite gebaut sind, brauchen weiterhin, dass ihre Bundle-Größen und Runtime-Performance validiert werden. Das gleiche JavaScript, das dank Rollup-Tree-Shaking schnell lädt, muss weiterhin schnell auf langsamen Geräten rendern. LoadFocus-Website-Speed-Testing validiert Core Web Vitals unter echten Netzwerkbedingungen über 30+ Standorte. API-Monitoring deckt die Backend-Endpoints ab, die deine Vite-gebaute SPA aufruft — Bundle-Optimierung hilft nicht, wenn die API langsam ist.
Verwandte LoadFocus-Tools
Setze dieses Konzept mit LoadFocus in die Praxis um — derselben Plattform, die alles antreibt, was du gerade gelesen hast.