mcpField
S
source-maps-debugging

source-maps-debugging

github.com/marius-townhouse開発643 回インストール38 週間前に更新
リポジトリ

source-maps-debugging について

コンパイラーやビルドツールでのソースマップ設定を解説する TypeScript デバッグスキルです。元の TypeScript ファイルでのデバッグ方法と、開発・本番環境に応じた設定を学べます。

主な機能

  1. 01TypeScript のソースマップ設定
  2. 02ビルドツールでのマップ設定
  3. 03ブレークポイントによる .ts のデバッグ
  4. 04本番環境向けマップ方式の選択
  5. 05マップとスタックトレースの検証

活用シーン

  1. 01ブラウザーや Node.js での TypeScript デバッグ
  2. 02.ts ファイルで機能しないブレークポイントの修正
  3. 03スタックトレースに TypeScript の位置を表示

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/marius-townhouse/effective-typescript-skills --skill source-maps-debugging

インストール後、Claude Code で/source-maps-debuggingを入力して読み込まれたか確認します。

詳細

ソースマップを使って TypeScript をデバッグする

概要

ソースマップは、TypeScript のソースコードと実際に実行されるコンパイル済み JavaScript の間をつなぎます。デバッガーで元の TypeScript コードを表示したり、.ts ファイルにブレークポイントを設定したり、意味のあるスタックトレースを確認したりできます。ソースマップがなければ、コンパイル済み JavaScript をデバッグすることになり、手間がかかるうえ、ミスも起きやすくなります。

TypeScript アプリケーションを効率よくデバッグするには、ソースマップを適切に設定することが不可欠です。

このスキルを使う場面

  • ブラウザーまたは Node.js で TypeScript をデバッグするとき
  • ビルドツール(webpack、vite、rollup)を設定するとき
  • スタックトレースにコンパイル済み JavaScript が表示されるとき
  • TypeScript ファイルでブレークポイントが機能しないとき
  • 本番ビルドを設定するとき

鉄則

デバッグのため、開発環境ではソースマップを有効にします。バンドルサイズを小さく保ちながらエラーを報告できるよう、本番環境では別途ソースマップを用意することを検討してください。

検出

次のようなデバッグ上の問題に注意してください。

// Stack trace shows compiled JavaScript:
Error: Something went wrong
    at Object.<anonymous> (app.js:42:15)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)

// Should show TypeScript:
Error: Something went wrong
    at fetchUser (api.ts:15:10)
    at async loadData (app.ts:42:5)

ソースマップを有効にする

TypeScript コンパイラー
// tsconfig.json
{
  "compilerOptions": {
    "sourceMap": true,        // Generate .js.map files
    "inlineSourceMap": false, // Don't inline (for development)
    "inlineSources": false,   // Include source in map
    "sourceRoot": "/",        // Root for source paths
    "mapRoot": "/"            // Root for map paths
  }
}
ビルドツール
// webpack.config.js
module.exports = {
  devtool: 'source-map',  // or 'eval-source-map' for faster builds
};

// vite.config.ts
export default {
  build: {
    sourcemap: true,
  },
};

// rollup.config.js
export default {
  output: {
    sourcemap: true,
  },
  plugins: [typescript({ sourceMap: true })],
};

ソースマップのオプション

オプション用途ビルド速度品質
source-map本番環境遅い最高
eval-source-map開発環境速い良好
inline-source-map単一ファイル普通良好
hidden-source-map本番環境(エラー報告)遅い最高
nosources-source-map本番環境(コードなし)遅いスタックトレースのみ

本番環境での注意点

// webpack.config.js - different for dev/prod
module.exports = (env) => ({
  devtool: env.production 
    ? 'hidden-source-map'  // Separate file, not referenced
    : 'eval-source-map',   // Fast, good for development
});

ソースマップをエラー報告サービスにアップロードします。

// Sentry example
Sentry.init({
  dsn: 'your-dsn',
  release: process.env.RELEASE,
  // Source maps uploaded separately
});

ソースマップを検証する

# Check if source map was generated
ls dist/*.js.map

# Inspect source map content
npx source-map-explorer dist/app.js

# Test in browser DevTools
# 1. Open DevTools
# 2. Go to Sources tab
# 3. Look for original .ts files
# 4. Set breakpoint in TypeScript

プレッシャー耐性プロトコル

ソースマップを設定するときは、次の点に注意してください。

  1. 開発環境で有効にする:デバッグに不可欠です
  2. 本番環境での方針を選ぶ:hidden、nosources、または無効
  3. ブレークポイントをテストする:TypeScript ファイルで機能することを確認します
  4. スタックトレースを確認する:.ts ファイル名と行番号が表示されるはずです
  5. バンドルサイズを監視する:ソースマップは大きくなることがあります

要注意の兆候

症状問題解決策
.ts のブレークポイントが機能しないソースマップが読み込まれていないビルド設定で有効にする
スタックトレースに .js が表示されるソースマップが生成されていないtsconfig/ビルドツールを確認する
行番号が間違っているソースマップが古いビルドして再生成する
バンドルサイズが非常に大きいインラインソースマップを使用している別ファイルを使う

よくある正当化

「ソースマップはビルドを遅くする」

実際のところ:開発環境では速度を優先して eval-source-map を使います。完全なソースマップは本番ビルドでのみ使用します。

「必要ありません。JS を読めます」

実際のところ:型や async/await の変換などを含むコンパイル済み JS のデバッグは大変です。ソースマップを使えば何時間もの作業を省けます。

「ソースコードが公開されてしまう」

実際のところ:本番環境では hidden-source-map または nosources-source-map を使います。エラー報告サービスにのみアップロードしてください。

クイックリファレンス

環境推奨設定備考
開発環境eval-source-map再ビルドが速い
本番環境+デバッグsource-map最高品質
本番環境+エラー報告hidden-source-mapサービスにアップロード
本番環境(最小構成)nosources-source-mapスタックトレースのみ

まとめ

TypeScript のデバッグにはソースマップを有効にします。開発環境では高速なオプションを使い、本番環境では hidden/nosources の使用を検討してください。ソースマップを使うと、デバッグが格段に簡単になります。

参考資料

  • Dan Vanderkam 著『Effective TypeScript』第 2 版
  • 項目 73:ソースマップを使って TypeScript をデバッグする

コメント