VS Code でテストコードをビルド対象から除外しつつエディタ上でエラーを出す

他の人がどうしてるのか気になって調べたんですが、それっぽい記事が見つからなかったので解決策を簡単に書いておきます。

目的

VS Code は TypeScript のコンパイラオプションを ./tsconfig.json から読み込んでおり、そのパスを指定するための設定もありません。テストコードを書くプロジェクトでは **/__tests__/**/* などを ./tsconfig.jsonexclude に指定してビルド対象から除外すると思いますが、そうすると VS Code 上でも検出対象から外れてしまい、エディタ上でエラーなどが表示されなくなってしまいます。この記事ではこれを解決します。

方法

./tsconfig.json には VS Code 上で検出したい設定を記述します。このとき、テストも検出対象にしたいので exclude でテストコードを除外することはしません。

  • tsconfig.json
{
  "compilerOptions": {},
  "include": ["./src/**/*"]
}

ビルド用に新規に ./tsconfig.production.json のようなファイルを用意し、./tsconfig.json を継承して、テストコードを除外します。

  • tsconfig.production.json
{
  "extends": "./tsconfig.json",
  "exclude": ["**/__tests__/**/*"]
}

ビルド時には ./tsconfig.production.json を使ってビルドするようにします。

  • package.json
{
  "scripts": {
    "build": "tsc --build ./tsconfig.production.json"
  }
}