Vite mit Claude Code: Blitzschnelle Build-Tools für moderne Web-Apps 2026
Vite hat Webpack und Create React App in vielen Projekten abgelöst — und das aus gutem Grund. Native ES Modules im Dev-Server, Hot Module Replacement in unter 50 ms und ein Plugin-Ökosystem, das keine Wünsche offen lässt. Kombiniert mit Claude Code als Build-Experten konfigurierst du selbst komplexe Monorepos in Minuten statt Stunden.
Warum Vite schneller ist als Webpack und CRA
Der entscheidende Unterschied liegt im Entwicklungsserver-Ansatz. Webpack bündelt beim Start die gesamte Applikation — bei großen Projekten dauert das 30–90 Sekunden. Vite hingegen nutzt native ES Modules direkt im Browser: Der Dev-Server startet sofort, und nur die tatsächlich angeforderten Module werden transformiert.
| Kriterium | Webpack / CRA | Vite 6.x |
|---|---|---|
| Kaltstart Dev-Server | 30–90 s | < 500 ms |
| HMR-Update | 2–10 s | < 50 ms |
| Prod-Build (Rollup) | 60–180 s | 8–25 s |
| Konfigurationskomplexität | Hoch (Loader-Chaos) | Gering (Plugin-API) |
| TypeScript-Support | Babel/ts-loader nötig | Out of the box (esbuild) |
Vite nutzt esbuild für die Transpilation (10–100× schneller als Babel) und Rollup für den Produktions-Build mit optimiertem Tree-Shaking. Das Beste aus beiden Welten — Geschwindigkeit im Dev und maximale Bundle-Qualität im Prod.
vite.config.ts: Die zentrale Konfigurationsdatei
Alles in Vite läuft über eine einzige, typisierte Konfigurationsdatei. Kein Babel-Config-Chaos, keine verschachtelten Loader-Regeln — stattdessen eine klare TypeScript-API.
Vollständige Produktions-Konfiguration
// vite.config.ts import { defineConfig, loadEnv } from 'vite' import react from '@vitejs/plugin-react' import svgr from 'vite-plugin-svgr' import { VitePWA } from 'vite-plugin-pwa' import path from 'path' export default defineConfig(({ command, mode }) => { // Env-Variablen mit Prefix laden const env = loadEnv(mode, process.cwd(), '') return { plugins: [ react(), svgr({ svgrOptions: { icon: true } }), VitePWA({ registerType: 'autoUpdate', manifest: { name: 'My App', short_name: 'App', theme_color: '#646cff', }, }), ], resolve: { alias: { '@': path.resolve(__dirname, './src'), '@components': path.resolve(__dirname, './src/components'), '@hooks': path.resolve(__dirname, './src/hooks'), '@utils': path.resolve(__dirname, './src/utils'), '@types': path.resolve(__dirname, './src/types'), }, }, server: { port: 5173, proxy: { '/api': { target: env.VITE_API_BASE_URL || 'http://localhost:3001', changeOrigin: true, rewrite: (p) => p.replace(/^\/api/, ''), }, '/ws': { target: 'ws://localhost:3001', ws: true, }, }, }, build: { outDir: 'dist', sourcemap: command === 'build' ? 'hidden' : true, minify: 'esbuild', target: 'es2022', rollupOptions: { output: { manualChunks: { 'react-vendor': ['react', 'react-dom'], 'router': ['react-router-dom'], 'ui': ['@radix-ui/react-dialog', '@radix-ui/react-dropdown-menu'], }, }, }, chunkSizeWarningLimit: 500, }, } })
Key Konfigurationsoptionen
resolve.alias server.proxy build.sourcemap manualChunks loadEnv() defineConfig() build.target VitePWAPath Aliases in tsconfig.json synchronisieren
Vite-Aliases müssen auch in der TypeScript-Konfiguration gespiegelt werden — sonst kennt der TS-Compiler die Shortcuts nicht.
// tsconfig.json — paths müssen mit vite.config.ts aliases übereinstimmen { "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["./src/*"], "@components/*": ["./src/components/*"], "@hooks/*": ["./src/hooks/*"], "@utils/*": ["./src/utils/*"], "@types/*": ["./src/types/*"] } } }
Plugin-Ökosystem: Die wichtigsten Vite-Plugins 2026
@vitejs/plugin-react — Offizielles React-Plugin
Das offizielle React-Plugin bringt Fast Refresh (HMR ohne State-Verlust), JSX-Transform und optionale Babel-Plugins für spezielle Transforms.
// Erweiterte React-Plugin-Konfiguration react({ // Babel-Plugins für spezielle Transforms babel: { plugins: [ 'babel-plugin-styled-components', ['@babel/plugin-proposal-decorators', { legacy: true }], ], }, // JSX in .tsx UND .ts Dateien (für Storybook-Kompatibilität) include: [/\.(tsx|ts|jsx|js)$/], })
vite-plugin-pwa — Progressive Web App in Minuten
Service Worker, Manifest, Caching-Strategien — das PWA-Plugin automatisiert alles. Besonders nützlich für Offline-fähige Apps und Mobile-Web-Erfahrungen.
VitePWA({ registerType: 'autoUpdate', workbox: { globPatterns: ['**/*.{js,css,html,ico,png,svg,woff2}'], runtimeCaching: [{ urlPattern: /^https:\/\/api\./, handler: 'NetworkFirst', options: { cacheName: 'api-cache', expiration: { maxEntries: 50, maxAgeSeconds: 300 }, }, }], }, manifest: { name: 'Agentic App', short_name: 'AgenticApp', description: 'KI-gestützte Web-App', theme_color: '#646cff', background_color: '#0d1117', display: 'standalone', icons: [ { src: 'pwa-192x192.png', sizes: '192x192', type: 'image/png' }, { src: 'pwa-512x512.png', sizes: '512x512', type: 'image/png' }, ], }, })
vite-plugin-svgr — SVGs als React-Komponenten
Mit SVGR importierst du SVG-Dateien direkt als typisierte React-Komponenten — mit voller Prop-Unterstützung für Farbe, Größe und Accessibility-Attribute.
// Import-Syntax mit vite-plugin-svgr import { ReactComponent as Logo } from './logo.svg' import { ReactComponent as ArrowIcon } from '@/assets/icons/arrow.svg' // Verwendung als echte React-Komponente function Header() { return ( <div> <Logo width={120} aria-label="Firmenlogo" /> <ArrowIcon className="icon-sm" fill="currentColor" /> </div> ) }
Library-Mode: npm-Packages mit Vite bauen
Vite ist nicht nur für Applikationen — im Library-Mode baust du npm-Packages mit automatischem CJS- und ESM-Output, TypeScript-Declarations und optimalem Tree-Shaking.
// vite.config.ts — Library-Mode für npm-Package import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import dts from 'vite-plugin-dts' import path from 'path' export default defineConfig({ plugins: [ react(), dts({ include: ['src'], outDir: 'dist/types' }), ], build: { lib: { entry: path.resolve(__dirname, 'src/index.ts'), name: 'MyComponentLib', formats: ['es', 'cjs'], fileName: (format) => `index.${format}.js`, }, rollupOptions: { // React und ReactDOM NICHT ins Bundle (Peer Dependencies) external: ['react', 'react-dom', 'react/jsx-runtime'], output: { globals: { 'react': 'React', 'react-dom': 'ReactDOM', }, }, }, minify: false, // Library-Consumer übernimmt Minify }, })
// package.json — korrekte Exports für Dual CJS/ESM { "name": "@myorg/ui-lib", "version": "1.0.0", "main": "./dist/index.cjs.js", "module": "./dist/index.es.js", "types": "./dist/types/index.d.ts", "exports": { ".": { "import": "./dist/index.es.js", "require": "./dist/index.cjs.js", "types": "./dist/types/index.d.ts" } }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" }, "files": ["dist"] }
Umgebungsvariablen und .env-Handling
Vite hat ein eigenes, sicheres System für Umgebungsvariablen. Nur Variablen mit
VITE_-Prefix werden ins Bundle eingebettet — alles andere
bleibt serverseitig.
# .env (Basis — wird IMMER geladen) VITE_APP_NAME=MyApp VITE_API_BASE_URL=https://api.example.com # .env.development (nur im Dev-Server aktiv) VITE_API_BASE_URL=http://localhost:3001 VITE_DEBUG_MODE=true # .env.production (nur beim Build aktiv) VITE_API_BASE_URL=https://api.production.com VITE_SENTRY_DSN=https://xxx@sentry.io/123 # .env.local (lokal, NIEMALS committen — in .gitignore!) VITE_DEV_TOKEN=my-secret-dev-token
// TypeScript-Typen für import.meta.env // vite-env.d.ts /// <reference types="vite/client" /> interface ImportMetaEnv { readonly VITE_APP_NAME: string readonly VITE_API_BASE_URL: string readonly VITE_DEBUG_MODE?: string readonly VITE_SENTRY_DSN?: string } interface ImportMeta { readonly env: ImportMetaEnv } // Verwendung im Code const apiUrl = import.meta.env.VITE_API_BASE_URL const isDebug = import.meta.env.VITE_DEBUG_MODE === 'true' const isDev = import.meta.env.DEV // Vite built-in const isProd = import.meta.env.PROD // Vite built-in
VITE_-Variablen sind im Browser sichtbar. Niemals API-Secrets,
Datenbank-Passwörter oder Private Keys mit VITE_ Prefix verwenden — diese landen im
JavaScript-Bundle und sind für jeden sichtbar.
Serverseitige Variablen in vite.config.ts lesen
// Alle Env-Variablen (auch ohne VITE_ Prefix) in vite.config.ts verfügbar export default defineConfig(({ mode }) => { const env = loadEnv(mode, process.cwd(), '') return { define: { // Zur Build-Zeit ersetzte Konstanten (wie #define in C) '__APP_VERSION__': JSON.stringify(env.npm_package_version), '__BUILD_TIME__': JSON.stringify(new Date().toISOString()), }, server: { proxy: { '/api': env.BACKEND_URL, // Kein VITE_ Prefix nötig in config }, }, } })
Claude Code Prompts für Vite-Konfiguration
Prompt-Bibliothek: Vite mit Claude Code
Diese Prompts funktionieren direkt in Claude Code — einfach in den Chat eingeben:
Setup & Migration
"Migriere mein Create React App Projekt zu Vite. Behalte alle bestehenden Imports, passe package.json Scripts an und konfiguriere vite.config.ts mit den gleichen Aliases wie bisher."
Performance-Optimierung
"Analysiere mein Vite-Bundle und konfiguriere manualChunks in rollupOptions, um Initial-Load-Chunks unter 200 KB zu halten. Separiere react-vendor, router und UI-Library."
Monorepo-Setup
"Richte ein pnpm Workspace Monorepo mit Vite ein. Packages-Ordner für shared libs, Apps-Ordner für Vite-Apps. Konfiguriere workspace:* Abhängigkeiten und Hot-Reload über Package-Grenzen."
Testing-Integration
"Integriere Vitest in mein Vite-Projekt als Unit-Test-Framework. Konfiguriere jsdom als Environment, Code-Coverage mit v8 und füge Testing-Library für React hinzu."
Vitest: Das native Test-Framework für Vite
// vite.config.ts — Vitest-Integration import { defineConfig } from 'vitest/config' export default defineConfig({ test: { environment: 'jsdom', globals: true, setupFiles: ['./src/test/setup.ts'], coverage: { provider: 'v8', reporter: ['text', 'json', 'html'], exclude: ['node_modules', 'dist', '**/*.d.ts'], thresholds: { lines: 80, functions: 80 }, }, include: ['src/**/*.{test,spec}.{ts,tsx}'], }, })
Fazit: Vite + Claude Code = modernes Build-Setup in Minuten
Vite hat die Art, wie wir Frontend-Projekte aufsetzen, grundlegend verändert. Native ES Modules, esbuild-basierte Transpilation und ein klares Plugin-System machen Build-Konfiguration beherrschbar — statt zur Dauerbaustelle zu werden.
Mit Claude Code als Vite-Experten reduzierst du Konfigurationsaufwand weiter: Aliases, Proxy-Setups, Library-Mode, PWA-Integration — alles entsteht durch präzise Prompts statt stundenlanger Dokumentations-Recherche. Das Ergebnis: mehr Zeit für Features, weniger für Tooling-Friction.
- Dev-Server startet in unter 500 ms statt 60 Sekunden
- HMR-Updates unter 50 ms erhalten den Flow-State
- Library-Mode macht npm-Package-Publishing trivial
- Vitest integriert sich nahtlos ohne separate Jest-Konfiguration
- Claude Code generiert typsichere Konfigurationen on-demand
Dein nächstes Vite-Projekt mit KI-Unterstützung
Starte noch heute mit Claude Code und konfiguriere dein Vite-Setup in Minuten statt Stunden. 14 Tage kostenlos — keine Kreditkarte erforderlich.
14 Tage kostenlos testen