LoginSignup
0
0

IntelliJ IDEA / WebStorm + ts-jestで "File is not included in any tsconfig.json"

Last updated at Posted at 2023-08-15

先に結論だけ

表題のエラーが出た場合、ts-jest用の単体テストファイルが配置してあるディレクトリに新たなtsconfig.jsonを追加し、includeとexcludeフィールドを上書きします。

▼__test__/tsconfig.json

{
  "extends": "../tsconfig.json",
  "include": ["./", "../src"],
  "exclude": []
}

はじめに

この記事は、IntelliJ IDEA系列のIDEでts-jest用のファイルに警告が発生する問題を記録、共有するためのものです。

想定する読者

  • IntelliJ IDEA系列のIDEを使っている
  • ts-jestを使っている
  • 単体テストファイルをTypeScriptで書いている

この問題はIntelliJ IDEA系列のIDE固有のものです。

想定する環境

  • WebStorm 2023.2
  • TypeScript 5.1.6
  • jest 29.5.0
  • ts-jest 29.1.0

対象となるアプリやパッケージのバージョンが変わると、記事の内容がそのまま適用できないかもしれません。記事を読む前に、お手元の環境をご確認ください。

問題と再現方法

プロジェクトにTypeScriptとts-jestをインストールします。

npm install --save-dev jest typescript ts-jest @types/jest

プロジェクトのルートディレクトリにtsconfig.jsonを配置します。

{
  "compilerOptions": {
    "baseUrl": "./",
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "__test__"]
}

__test__ディレクトリを作成し、test.spec.tsを配置します。

問題ウィンドウの表示

この段階で問題ウィンドウにFile is not included in any tsconfig.jsonという警告が表示されます。警告が表示されるだけで、ts-jestの単体テストは正常に完了します。

解決方法

この警告は単体テストの動作には影響しませんが、問題ウィンドウの見通しが悪くなります。警告が表示されないように設定ファイルを追加します。

問題の原因

この問題は、tsconfig.jsonの設定で

  • テストファイルがincludeの範囲から外れている
  • テストファイルがexcludeで除外されている

のいずれかで発生します。

上記の再現例では

  • srcディレクトリだけをincludeしている
  • __test__ディレクトリをexcludeしている

ために__test__/test.spec.tsがtsconfigの対象外になっています。

IntelliJ IDEAのエラーチェック

IntelliJ IDEA系統のIDEやVisual Studio Codeは、編集中のTypeScriptファイルからもっとも近いtsconfig.jsonを参照してエラーをチェックしています。

この動作は、tscコマンドの動作にしたがっています。tscコマンドを--projectオプションなしで実行した場合、TypeScriptコンパイラーはディレクトリを遡ってもっとも近いtsconfig.jsonを探します。

IntelliJ IDEA系統のIDEはこの動作に従い、単体テストファイルをチェックします。単体テストファイルがincludeもしくはexcludeの範囲に入っていないため、tscコマンドを実行してもトランスパイルされないという警告を表示します。Visual Studio Codeも同じようにエラーをチェックしていますが、この件については警告を表示しません。

テストディレクトリにtsconfig.jsonを追加する

ts-jestで利用する__test__ディレクトリー内のエラーのみを修正したい場合、このディレクトリに新たなtsconfig.jsonを追加します。

{
  "extends": "../tsconfig.json",
  "include": ["./", "../src"],
  "exclude": []
}

__test__/tsconfig.jsonを追加し、includeとexcludeフィールドを上書きします。これでIDE上での警告が消えます。

__test__/tsconfig.json__test__ディレクトリ内でtscコマンドを実行するか、--projectオプションを指定しない限りトランスパイルには利用されません。プロジェクトに影響を与えず警告だけを消せます。

以上、ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0