ts6to7 - TypeScript 5/6 → 7(tsgo) への移行を自動化する codemod
(github.com/zi-gae)昨日、TypeScript 7 が正式リリースされました。Go で書き直されたネイティブコンパイラ(tsgo)により約10倍高速化しましたが、TS5/6 で deprecated だったコンパイラオプションがすべて削除され、strict のデフォルト値も true に変わったため、古い tsconfig を持つプロジェクトはそのままではアップグレードできません。
その機械的な部分を自動化する codemod を作りました。
npx ts6to7 --dry # プレビュー(何も書き込みません)
npx ts6to7 # 適用
やること:
- tsconfig*.json をその場で修正 — jsonc-parser で編集するため、コメントとフォーマットはそのまま維持されます
- 削除されたオプションを TS7 の同等設定に変換: target: es5 → ES2015、module: umd/amd → ESNext、moduleResolution: node → NodeNext/Bundler、importsNotUsedAsValues → verbatimModuleSyntax など
- baseUrl は paths に折りたたみ
- typescript 依存関係を ^7.0.0 にバンプ
- strict が未設定だった場合は false に固定 — extends で別の config を継承するファイルは変更せず、警告のみ出します(ベース config がすでに strict を設定している可能性があるためです)
- 安全に自動変換できないもの(ES5 専用ランタイム、ts-node/ts-jest のような旧コンパイラ API ベースのツール、types 配列の欠落など)は、ファイル単位でスコープされた「手動確認が必要」チェックリストとして出力
TypeScript 5 からでも直接移行可能: 6 を経由する必要はありません。TS5 時代のオプションである ignoreDeprecations や、プロジェクト参照の prepend もあわせて整理します。
モノレポにも対応しています(すべてのパッケージをスキャン)。
現在は 0.2.0 です。tsconfig が誤って変換されるケースがあれば、その tsconfig を添付した issue で知らせてもらえると大変助かります。
まだコメントはありません。