Das Team hinter Knip — dem beliebten Open-Source-Tool zum Finden ungenutzter Dateien, Abhängigkeiten und Exports in JavaScript- und TypeScript-Projekten — hat Version 6 veröffentlicht. Die Kernzahl: 2 bis 4 mal schneller auf ganzer Linie.
Der entscheidende Wechsel: Der komplette Austausch des TypeScript-Backends gegen oxc-parser, den Rust-basierten Parser des Oxc Project.
Warum das TypeScript-Backend an eine Wand stieß
Knip parst jede Datei nur einmal, aber die alte TypeScript-Engine schleppte den Overhead eines kompletten Programms und Typecheckers mit. Diese Einrichtung war für IDEs und Sprachserver gedacht — nicht für einen Analysator, der nur einen einzigen Durchgang braucht.
„Das TypeScript-Backend machte das gesamte Setup schwieriger und langsamer als nötig, besonders für große Monorepos." — Lars Kappert, v6-Ankündigung
Das TypeScript-Team schreibt den Compiler für v7 gerade in Go um. Die LanguageService-basierten APIs, auf die Knip für Features wie classMembers setzte, wären damit gone gewesen.
Die Zahlen
| Projekt | v5.88.0 | v6.0.0 | Speedup |
|---|---|---|---|
| Astro | 4,0s | 2,0s | 2,0x |
| TanStack Query | 3,8s | 1,7s | 2,2x |
| Rolldown | 3,7s | 1,7s | 2,2x |
| Sentry | 11,0s | 4,0s | 2,8x |
| TypeScript (microsoft/TypeScript) | 3,7s | 0,9s | 4,1x |
Das Microsoft-TypeScript-Repo wird in unter einer Sekunde analysiert.
Wichtige Breaking Changes
- Node.js v20.19.0+ erforderlich — v18 wird nicht mehr unterstützt
- classMembers-Issue-Typ entfernt — nicht mehr machbar ohne TypeScripts LanguageService-API
--include-libsund--isolate-workspacesFlags entfernt — das ist jetzt das Standardverhalten--experimental-tagsumbenannt in--tags
Upgrade
npm install -D knip@latest
Vollständige Dokumentation auf knip.dev.