Inhaltsverzeichnis
Wer TypeScript-Projekte entwickelt, kennt das Problem: zwei separate Tools (ESLint für Linting, Prettier für Formatierung), teils konkurrierende Regeln, komplexe Konfigurationsdateien und langsame CI-Durchläufe. Biome löst das mit einem einzigen, Rust-basierten Werkzeug — und ist dabei zehnmal schneller als Prettier.
In diesem Guide zeigen wir, wie du Biome in einem modernen TypeScript-Projekt aufsetzt, konfigurierst und mit Claude Code automatisiert einsetzt. Claude Code übernimmt dabei die Migration, generiert Konfigurationen und integriert Biome nahtlos in dein CI/CD-Setup.
1. Biome Setup & Grundkonfiguration
Biome ist ein Drop-in-Ersatz für das ESLint + Prettier Duo. Die Installation dauert weniger als eine Minute — danach hat dein Projekt einen einheitlichen Code-Stil und aussagekräftige Linting-Fehler.
Installation
Biome wird als DevDependency installiert. Es gibt kein globales CLI-Paket, das du pflegen müsstest:
Nach der Installation initialisierst du Biome mit dem eingebauten init-Befehl. Dieser erstellt eine minimale biome.json im Projekt-Root:
Das Ergebnis ist eine biome.json mit sinnvollen Standardwerten:
Grundlegende CLI-Befehle
package.json Scripts
Füge diese Scripts in deine package.json ein — Claude Code erkennt sie automatisch und nutzt sie bei Code-Reviews:
Erste Verwendung — Struktur eines TypeScript-Projekts
Biome arbeitet direkt mit TypeScript-Dateien — kein zusätzlicher Parser, kein Plugin-System. Das Tool versteht TypeScript nativ, was es so schnell macht.
2. biome.json Konfiguration im Detail
Die biome.json ist deine zentrale Steuerdatei. Hier legst du Formatierstil, Linting-Intensität und Ausnahmen fest — alles an einem Ort, kein Split über .eslintrc, .prettierrc und weitere Dateien.
Vollständige Konfiguration für TypeScript-Projekte
Formatter-Optionen im Überblick
| Option | Werte | Empfehlung |
|---|---|---|
| indentStyle | space / tab | space (Standard) |
| indentWidth | 1–8 | 2 (JS-Konvention) |
| lineWidth | 60–320 | 80–120 |
| quoteStyle | double / single | double (Google Style) |
| trailingCommas | all / es5 / none | all (Git-Diffs sauberer) |
| semicolons | always / asNeeded | always |
| arrowParentheses | always / asNeeded | always |
Override-Konfigurationen für bestimmte Dateitypen
Biome unterstützt dateitypspezifische Overrides — nützlich wenn du z.B. für Test-Dateien andere Regeln haben möchtest:
3. Linting-Regeln & Diagnostics
Biomes Linter ist kein ESLint-Klon — er ist schneller, opinionierter und liefert Fehlermeldungen mit konkreten Fix-Vorschlägen. Verstehe die Regelstruktur, um das Beste aus ihm herauszuholen.
Regelkategorien
Biome organisiert seine Regeln in Kategorien. Jede Kategorie hat einen Schwerpunkt:
Recommended-Regeln aktivieren und anpassen
Suppressionen — Regeln gezielt deaktivieren
Manchmal musst du eine Regel für eine einzelne Zeile unterdrücken. Biome nutzt dafür eigene Kommentare:
Diagnostics verstehen
Biomes Fehlermeldungen sind präzise und zeigen direkt, wie der Fix aussieht:
4. CI/CD & Pre-commit Integration
Biome glänzt in automatisierten Pipelines. Ein einziger Befehl prüft Formatierung, Linting und Import-Reihenfolge — und das in Sekunden, nicht Minuten.
Pre-commit Hooks mit Husky + lint-staged
-
Husky und lint-staged installierennpm install --save-dev husky lint-staged npx husky init
-
.husky/pre-commit konfigurieren#!/bin/sh . "$(dirname "$0")/_/husky.sh" npx lint-staged
-
lint-staged in package.json konfigurieren{ "lint-staged": { "*.{ts,tsx,js,jsx,json}": [ "biome check --apply --no-errors-on-unmatched" ] } }
GitHub Actions Workflow
Der Unterschied zwischen biome check und biome ci
| Befehl | Verhalten | Einsatz |
|---|---|---|
| biome check . | Prüft, schlägt fixes vor, Exit Code 1 bei Problemen | Lokale Entwicklung |
| biome check --apply . | Prüft und wendet sichere Fixes automatisch an | Pre-commit Hook |
| biome ci . | Keine Fixes, kein Caching, Exit Code 1 bei Problemen | CI-Pipelines |
| biome check --changed | Nur geänderte Dateien seit Branch-Abzweig | PR-Checks (schnell) |
Monorepo-Setup mit Biome
In Monorepos kannst du eine Root-biome.json verwenden und in Packages überschreiben:
5. Migration von ESLint + Prettier
Die Migration klingt nach Arbeit, ist aber mit den eingebauten Migrationsbefehlen und Claude Code-Unterstützung oft in unter einer Stunde erledigt.
Automatische Migration mit biome migrate
Biome liest deine bestehenden .prettierrc, .eslintrc-Dateien und konvertiert sie in die biome.json-Syntax. Nicht alle Regeln haben ein 1:1-Äquivalent — Biome listet diese als Warnungen auf.
Konfigurationsmapping: ESLint → Biome
| ESLint-Regel | Biome-Äquivalent | Status |
|---|---|---|
| no-unused-vars | correctness/noUnusedVariables | ✅ vollständig |
| prefer-const | style/useConst | ✅ vollständig |
| no-console | suspicious/noConsoleLog | ✅ vollständig |
| eqeqeq | suspicious/noDoubleEquals | ✅ vollständig |
| @typescript-eslint/no-explicit-any | suspicious/noExplicitAny | ✅ vollständig |
| import/order | organizeImports | ✅ eingebaut |
| react-hooks/rules-of-hooks | correctness/useHookAtTopLevel | ✅ vollständig |
| no-restricted-imports | ⚠️ nursery in Arbeit | ⚠️ experimentell |
| import/no-cycle | ❌ noch nicht verfügbar | ❌ Workaround nötig |
| unicorn/no-array-for-each | complexity/noForEach | ✅ vollständig |
Prettier-Konfigurationsmapping
| .prettierrc Option | biome.json Äquivalent |
|---|---|
| printWidth: 80 | formatter.lineWidth: 80 |
| tabWidth: 2 | formatter.indentWidth: 2 |
| useTabs: false | formatter.indentStyle: "space" |
| singleQuote: true | javascript.formatter.quoteStyle: "single" |
| trailingComma: "es5" | javascript.formatter.trailingCommas: "es5" |
| semi: false | javascript.formatter.semicolons: "asNeeded" |
| endOfLine: "lf" | formatter.lineEnding: "lf" |
Edge Cases bei der Migration
Häufige Probleme und Lösungen
1. eslint-disable-Kommentare
Biome versteht eslint-disable-Kommentare nicht. Konvertiere sie zu biome-ignore:
2. Prettier-Plugins
Prettier-Plugins (z.B. prettier-plugin-tailwindcss) haben in Biome kein direktes Äquivalent. Für Tailwind-Sortierung: nursery/useSortedClasses als Linting-Regel nutzen.
3. .eslintignore konvertieren
Mit Claude Code migrieren
Claude Code kann die Migration vollständig übernehmen. Ein effektiver Prompt:
6. VS Code Extension & Developer Experience
Die Biome VS Code Extension ist das i-Tüpfelchen. Kombiniert mit Claude Code bekommst du ein Tooling-Setup, das schneller reagiert als jedes ESLint+Prettier-Setup der Vergangenheit.
Extension installieren und konfigurieren
Installiere die offizielle Extension:
Füge diese Einstellungen in deine .vscode/settings.json ein:
Als Team-Empfehlung in .vscode/extensions.json:
Performance-Benchmark: Biome vs. Prettier vs. ESLint
Benchmark: 1.000 TypeScript-Dateien formatieren
| Tool | Zeit | Relativ zu Biome | CPU-Kerne |
|---|---|---|---|
| Biome | 0.3s | 1x (Basis) | Multi-threaded |
| Prettier | 3.0s | 10x langsamer | Single-threaded |
| ESLint (ohne TS) | 1.8s | 6x langsamer | Single-threaded |
| ESLint + TypeScript | 8.5s | 28x langsamer | Single-threaded |
Benchmark auf M2 MacBook Pro, 50.000 Zeilen TypeScript. Zahlen variieren je nach Projekt und Hardware.
Der Geschwindigkeitsunterschied kommt von Biomes Rust-Implementierung und dem Multi-Threading-Ansatz. Prettier ist Single-threaded und Node.js-basiert — bei großen Codebases wird der Unterschied noch deutlicher.
Biome in Claude Code — Das perfekte Duo
Claude Code und Biome ergänzen sich ideal:
- Claude generiert konformen Code: Claude liest deine biome.json und generiert Code, der direkt konform ist — keine nachträgliche Formatierung nötig.
- Auto-Fix nach Generierung: Wenn Claude eine Datei bearbeitet, läuft biome check --apply automatisch (bei korrekt konfigurierten Hooks).
- Schnelles Feedback: Biomes Sub-Sekunden-Geschwindigkeit bedeutet, dass Claude Code sofort Feedback bekommt und Korrekturen im selben Turn vornehmen kann.
- Konsistenz im Team: Alle Claude Code Agents im Team nutzen dieselbe biome.json — Formatierungsdiskussionen entfallen.
- CI-Gates: biome ci als Pipeline-Step blockiert non-konformen Code — auch Code von KI-Agents.
Empfohlenes Workflow-Setup 2026
Troubleshooting — Häufige Probleme
Bekannte Stolpersteine
Extension erkennt biome.json nicht
Stelle sicher, dass VS Code im Projekt-Root geöffnet ist (nicht in einem Unterordner). Biome sucht die Konfiguration relativ zum Workspace-Root.
Konflikte mit ESLint Extension
Deaktiviere die ESLint-Extension im Workspace (nicht global), wenn du auf Biome migriert hast:
JSON-Dateien werden nicht formatiert
Stelle sicher, dass [json] explizit auf Biome als defaultFormatter gesetzt ist. VS Code verwendet sonst seinen eingebauten JSON-Formatter.
biome ci schlägt in CI fehl, lokal nicht
Prüfe die Node.js-Version. Biome sollte über das in package.json gelistete @biomejs/biome Paket aufgerufen werden — kein globales Binary, das in CI möglicherweise eine andere Version hat.
Fazit: Warum Biome 2026 die richtige Wahl ist
Biome hat in 2026 den Reifegrad erreicht, der ihn für den produktiven Einsatz empfiehlt. Die Kombination aus:
- Rust-Geschwindigkeit (10x schneller als Prettier)
- Einer einzigen Konfigurationsdatei statt drei
- Über 97% ESLint-Kompatibilität
- Nativer TypeScript-Unterstützung ohne Plugin
- Hervorragender Claude Code Integration
...macht Biome zum überzeugenden Standard für neue TypeScript-Projekte und lohnenden Migrationsschritt für bestehende. Fang klein an: Ersetze Prettier zuerst, dann ESLint. Claude Code hilft dir dabei, die Migration sicher und schnell durchzuführen.
Tooling-Modul im Kurs
Im Claude Code Mastery Kurs: vollständiges Tooling-Modul mit Biome, CI/CD-Integration, Migration-Guide und Performance-Tuning für TypeScript-Projekte.
14 Tage kostenlos testen →