ts6to7 - Codemod zur Automatisierung der Migration von TypeScript 5/6 → 7(tsgo)
(github.com/zi-gae)Gestern wurde TypeScript 7 offiziell veröffentlicht. Mit dem in Go neu geschriebenen nativen Compiler (tsgo) ist es etwa 10-mal schneller geworden, aber die in TS5/6 als deprecated markierten Compiler-Optionen wurden vollständig entfernt, und der Standardwert von strict wurde ebenfalls auf true geändert — Projekte mit älteren tsconfig-Dateien lassen sich daher nicht einfach so upgraden.
Ich habe ein Codemod erstellt, das diesen mechanischen Teil automatisiert.
npx ts6to7 --dry # Vorschau (schreibt nichts)
npx ts6to7 # Anwenden
Was es macht:
- bearbeitet
tsconfig*.jsondirekt an Ort und Stelle — durch Bearbeitung mitjsonc-parserbleiben Kommentare und Formatierung unverändert - konvertiert entfernte Optionen in TS7-Äquivalente:
target: es5→ES2015,module: umd/amd→ESNext,moduleResolution: node→NodeNext/Bundler,importsNotUsedAsValues→verbatimModuleSyntaxusw. - faltet
baseUrlinpathsein - hebt die
typescript-Abhängigkeit auf^7.0.0an - falls
strictnicht gesetzt war, wird es auffalsefixiert — Dateien, die überextendsandere Konfigurationen erben, werden nicht verändert, sondern nur mit einer Warnung versehen (weil die Basis-Configstrictmöglicherweise bereits setzt) - Dinge, die sich nicht sicher automatisch umwandeln lassen (ES5-spezifische Laufzeitumgebungen, Tools auf Basis alter Compiler-APIs wie
ts-node/ts-jest, fehlendetypes-Arrays usw.), werden als dateibezogene Checkliste „manuelle Prüfung erforderlich“ ausgegeben
Direkte Migration auch von TypeScript 5 aus möglich: Es ist nicht nötig, erst 6 zu durchlaufen. Optionen aus der TS5-Ära wie ignoreDeprecations sowie prepend bei Projekt-Referenzen werden ebenfalls bereinigt.
Monorepos werden ebenfalls unterstützt (Scan aller Pakete).
Aktuell ist Version 0.2.0. Falls es Fälle gibt, in denen tsconfig falsch umgewandelt wird, wäre es eine große Hilfe, wenn ihr ein Issue mit der betreffenden tsconfig anhängt.
Noch keine Kommentare.