TypeScript 7.0 に上げたら target や baseUrl でビルドが止まった人向けの逆引きです。TS5108・TS5102・TS5101 の症状別に、tsc を実際に動かして確かめた原因と直し方を5ケースで整理しました。
TS 7 に上げたらビルドが止まったときの直し方
- TypeScript 7.0 にしたら「Option ‘target=ES5’ has been removed」でビルドが通らない
- baseUrl を消せと言われるけど、paths の書き換え方が分からない
- tsconfig に書いていないのに TS5107 系のエラーが出る
対象読者: TypeScript 6 系から 7 系へ移行中の人です。
前提知識: tsconfig.json の基本と、npm 経由で tsc を実行する方法です。
結論
TS 7.0 で廃止されたオプションは、警告を抑えるフラグでは消せません。設定自体を直す必要があります。
- TS5108 / TS5102 が出たら、該当オプションを tsconfig から削除する
- 6 系での一時しのぎなら ignoreDeprecations: “6.0”(7 系では無効)
- 書いていないのに出る場合は、ビルドツールが既定値を注入している
ケース1: TS5108「target=ES5 has been removed」
target を es2015 以降に上げるしかありません。
再現に使った tsconfig と、実測のエラー出力です。
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true
}
}
npx tsc -p case-a --noEmit
# 実行結果
case-a/tsconfig.json(3,15): error TS5108: Option 'target=ES5' has been removed. Please remove it from your configuration.
TS 6.0 では TS5107 の警告に留まりました。7.0 ではオプション自体が削除され、警告がエラーに変わっています。
ignoreDeprecations: “6.0” を足しても消えません。同じ TS5108 が出続けることを実測で確認しています。
直し方は target の差し替えだけです。
{
"compilerOptions": {
"target": "es2015",
"module": "commonjs",
"strict": true
}
}
npx tsc -p case-a-fixed --noEmit && echo compile-ok
# 実行結果
compile-ok
古い実行環境を対象にする必要がある場合は、出力後に別のトランスパイラで下げるのが現実的です。
ケース2: TS5102「baseUrl has been removed」と TS5090
baseUrl を消して、paths の値を tsconfig からの相対パスに書き直します。
実測の出力です。baseUrl だけでなく、paths の値にも「./」が必須になっています。
{
"compilerOptions": {
"target": "es2020",
"module": "commonjs",
"baseUrl": ".",
"paths": { "@app/*": ["src/*"] }
}
}
npx tsc -p case-b --noEmit
# 実行結果
case-b/tsconfig.json(5,5): error TS5102: Option 'baseUrl' has been removed. Please remove it from your configuration.
Use '"paths": {"*": ["./*"]}' instead.
case-b/tsconfig.json(6,27): error TS5090: Non-relative paths are not allowed. Did you forget a leading './'?
6 系では TS5101 の警告になり、移行情報へのリンクが付きます。
npx -p typescript@6 tsc -p case-b --noEmit
# 実行結果
case-b/tsconfig.json(5,5): error TS5101: Option 'baseUrl' is deprecated and will stop functioning in TypeScript 7.0. Specify compilerOption '"ignoreDeprecations": "6.0"' to silence this error.
Visit https://aka.ms/ts6 for migration information.
直し方は baseUrl 行の削除と、paths の値への「./」付与です。
{
"compilerOptions": {
"target": "es2020",
"module": "commonjs",
"paths": { "@app/*": ["./src/*"] }
}
}
@app/ 経由の import を実際に解決できることも確認済みです。
npx tsc -p case-b-fixed --noEmit && echo alias-resolution-ok
# 実行結果
alias-resolution-ok
baseUrl が廃止になった背景の深掘りは、TypeScript 6.0 移行ガイドに記載されています。
ケース3: module / moduleResolution の削除値
amd・umd・system と、moduleResolution の node・classic は TS 7 で使えません。
実測した対応関係を表にまとめました。
| 指定値 | TS 7.0.2 の実測結果 | 直し方 |
|---|---|---|
| module: “amd” / “umd” / “system” | TS5108(removed) | “esnext” か “preserve” へ |
| moduleResolution: “node” | TS5108(node10 として報告) | “bundler” か “nodenext” へ |
| moduleResolution: “classic” | TS6046(選択肢に無い引数) | “bundler” か “nodenext” へ |
| target: “es3” | TS6046(選択肢に無い引数) | “es2015” 以降へ |
module amd の実測はこちらです。bundler 既定との組み合わせエラーも併せて出ます。
npx tsc -p case-c --noEmit
# 実行結果
case-c/tsconfig.json(1,3): error TS5095: Option 'bundler' can only be used when 'module' is set to 'preserve', 'commonjs', or 'es2015' or later.
case-c/tsconfig.json(1,54): error TS5108: Option 'module=AMD' has been removed. Please remove it from your configuration.
アプリやバンドラ利用なら module は esnext、ライブラリなら nodenext が無難です。
ケース4: esModuleInterop=false など「false を明示した」系
false に固定していた行は丸ごと削除します。
{
"compilerOptions": {
"target": "es2020",
"module": "commonjs",
"esModuleInterop": false
}
}
npx tsc -p case-e --noEmit
# 実行結果
case-e/tsconfig.json(1,85): error TS5108: Option 'esModuleInterop=false' has been removed. Please remove it from your configuration.
7.0 で interop 系の挙動が既定で有効になったため、false の指定自体が削除対象になったんですね。
alwaysStrict=false、allowSyntheticDefaultImports=false も同じく TS5108 が出ます。直し方は行を消すだけです。
ケース5: tsconfig に無いのにエラーが出る
ビルドツール側が既定の compilerOptions を注入しています。
ts-loader 経由の Cypress では、15.14.0 より前が downlevelIteration や moduleResolution: classic を勝手に足していたことが issue #33385 で報告・修正されています。
Visual Studio の MSBuild でも、ツール側の TypeScript 7 化で同じ削除エラーが出る事例があります。
まず tsc 単体で再現するか切り分けてみてください。CLI からでも同じエラーが出ます。
npx tsc --target es5 --noEmit index.ts
# 実行結果
error TS5108: Option 'target=ES5' has been removed. Please remove it from your configuration.
原因がツール側なら、ツールを最新にするか、ツール側の TypeScript バージョンを固定するのが直し方です。
一時しのぎは ignoreDeprecations: “6.0” ですが、警告を消すだけで根本解決ではありません。
つまずきポイント
- ignoreDeprecations: “6.0” は 6 系専用。7 系では TS5108 / TS5102 を消せない
- 7 系で ignoreDeprecations を指定しても、非推奨の指定が無ければエラーを出さずに通る。無効化の目印にはならない
- target es3 は TS5108 ではなく TS6046(選択肢に無い引数)で落ちる
- –target es5 のような CLI フラグでも TS5108 になる。tsconfig だけの問題ではない
検証環境
| OS | Windows 11 (build 10.0.26200) |
|---|---|
| CPU | AMD Ryzen 9 PRO 8945HS w/ Radeon 780M Graphics |
| メモリ | 28GB |
| 言語/ツール | Node.js 24.16.0(ホストにインストール済み)/ TypeScript 7.0.2(npm 経由)/ TypeScript 6.0.3(npm 経由・比較用) |
| 使用コマンド | tsc -p case-a 〜 case-f –noEmit(削除エラーの再現)/ tsc -p case-a-fixed・case-b-fixed –noEmit(修正後のコンパイル確認)/ tsc –target es5 –noEmit index.ts(CLI フラグの再現) |
| 測定日 | 2026-10-25 |
上記の環境で実際に実行して確認した結果です。環境が異なる場合は挙動が変わることがあります。

まとめ
公式の移行の目安はシンプルです。6 系で ignoreDeprecations なしにクリーンにコンパイルできること、と書かれています。
| エラーコード | 意味 | 直し方 |
|---|---|---|
| TS5108 | オプション(の値)が TS 7 で削除 | 該当行を削除する |
| TS5102 | baseUrl・downlevelIteration が削除 | baseUrl 削除・paths は相対パスに |
| TS5101 | TS 6 で baseUrl 非推奨 | 同上(6 系の警告) |
| TS5107 | TS 6 で値が非推奨 | 新しい値へ変更(6 系の警告) |
| TS5090 | paths の値に ./ 必須 | “./src/*” 形式に書き直す |
| TS6046 | 選択肢に無い値 | エラーの一覧から新しい値を選ぶ |
6 系で警告のまま見逃していた指定が、7 系ではまとめてエラーになります。早めに直しておくと楽ですよ。
【広告】お名前.comならドメイン取得が格安。![]()
参考
- Announcing TypeScript 7.0(Microsoft 公式ブログ)
- Announcing TypeScript 6.0(Microsoft 公式ブログ)
- cypress #33385 — TS6 deprecated options via ts-loader(修正済み・クローズ)
- TypeScript 6 移行情報(aka.ms/ts6)
あわせて読みたい
- 【TypeScript】TS 7 vs 6.0 型チェック速度を実測比較2026
- 【TypeScript】import defer 完全ガイド — 評価を遅延する新構文
- 【TypeScript】TypeScript 6.0 移行ガイド — 5.x からの手順と新機能
- 【ESLint】.eslintrc から v10 の flat config へ移行したログ — 実際に壊れた4箇所
【広告】このサイトはConoHa WINGで運営しています。安定した高速サーバーで快適にブログを書けています。いつもありがとう!!![]()

コメント