ts6to7 - codemod d’automatisation de migration TypeScript 5/6 → 7 (tsgo)
(github.com/zi-gae)TypeScript 7 est sorti officiellement hier. Grâce au compilateur natif tsgo, réécrit en Go, il est environ 10 fois plus rapide, mais toutes les options de compilateur dépréciées en TS5/6 ont été supprimées, et la valeur par défaut de strict est aussi passée à true — du coup, les projets avec un ancien tsconfig ne peuvent pas simplement être mis à niveau.
J’ai créé un codemod pour automatiser cette partie mécanique.
npx ts6to7 --dry # aperçu (n’écrit rien)
npx ts6to7 # applique les modifications
Ce qu’il fait :
- modifie
tsconfig*.jsonsur place — l’édition passe parjsonc-parser, donc les commentaires et le formatage sont conservés tels quels - convertit les options supprimées vers leurs équivalents TS7 :
target: es5→ES2015,module: umd/amd→ESNext,moduleResolution: node→NodeNext/Bundler,importsNotUsedAsValues→verbatimModuleSyntax, etc. - replie
baseUrldanspaths - met à jour la dépendance
typescriptvers^7.0.0 - si
strictn’était pas défini, le fixe àfalse— les fichiers qui héritent d’une autre config viaextendsne sont pas modifiés, seul un avertissement est affiché (car la config de base peut déjà définirstrict) - pour les éléments qui ne peuvent pas être convertis automatiquement en toute sécurité (runtime spécifique à ES5, outils fondés sur l’ancienne API du compilateur comme
ts-node/ts-jest, absence du tableautypes, etc.), produit une checklist « vérification manuelle requise » limitée au fichier concerné
Migration directe possible depuis TypeScript 5 : pas besoin de passer par 6. Les options de l’ère TS5 comme ignoreDeprecations et prepend dans les références de projet sont aussi nettoyées.
Le monorepo est également pris en charge (scan de tous les packages).
Version actuelle : 0.2.0. S’il existe des cas où tsconfig est mal converti, ce serait d’une grande aide de les signaler via une issue en joignant le tsconfig concerné.
Aucun commentaire pour le moment.