1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

モノレポでVSCodeのJest拡張機能を利用する

Posted at

はじめに

モノレポのプロジェクトにて、VSCodeにおけるJestの拡張機能を利用しようとした際に、
最初はテストが上手くいかなかったので、備忘録として残しておく。

vscode-jest について

If the extension can find the jest command, by default it will automatically run and monitor all tests in watch mode upon launch, and you should see tests, status, errors, coverage (if enabled) in TestExplorer and editors.

拡張機能がjestコマンドを見つけることができれば、デフォルトではVSCode起動時にすべてのテストを自動的に実行し、ウォッチモードで監視するようになる。VSCode上でテストやステータス、エラー、カバレッジを確認可能。

・you can use jest.jestCommandLine to tell the extension to use yarn test instead of the default jest command.
・you can use jest.autoRun to optimize performance and control when the extension should run your tests.
・you can use the extension with monorepo projects, see monorepo project support for details.

  • jest.jestCommandLine: デフォルトのjestコマンドの代わりにyarn testを使うように設定可能。
  • jest.autoRun: 拡張機能がテストを実行するタイミングを制御可能。
  • モノレポプロジェクトに対応可能(これがやりたかった)
  1. Setup jest in your project if you haven't.
  2. install "Jest" extension in vscode.
  3. reload or restart vscode

上記ドキュメントによると導入は簡単で、Jestを使っているプロジェクトにおいて、拡張機能をインストールし、VSCodeを再起動すればよい。

モノレポに対応させる

ここからが本題。

The easiest way to setup the monorepo projects is to use the Setup Tool and choose Setup monorepo project.

まず以下のドキュメントに従い、セットアップツールを使ってモノレポ用の設定ができるとのこと。

The extension supports monorepo projects in the following configurations:

  1. Single-root workspace: If all tests from monorepo packages can be run from a centralized location, such as project root, then a single-root workspace with proper "jest.jestCommandLine" and "jest.rootPath" setting should work.
  2. Multi-root workspace: If each monorepo package has its own local jest root and configuration, a multi-root workspaces is required. Users can use "jest.disabledWorkspaceFolders" to exclude the packages from jest run.

ルートからすべてのテストを実行できる構成(Single-root workspace)と、各パッケージがJestの設定ファイルを持っている構成(Multi-root workspace)では、設定項目が異なる。
マルチのほうでは、以下の設定が必要(自分のプロジェクトがこのパターンだった)。
どちらの構成でも上記のセットアップツールを使えば、簡単に設定できる。

まずは、Cmd + Shift + P でコマンドパレットを開き、jestで検索して、「Jest: Setup Extension」を選択する。

スクリーンショット 2023-05-14 16.59.37.png

次に、「Setup Monorepo Project」を選択。

スクリーンショット 2023-05-14 17.00.53.png

そして、マルチルートのワークスペースに変えるため、「There is an individual jest config for each package」を選択。

スクリーンショット 2023-05-14 17.00.39.png

すると、ディレクトリ構成を解析して、以下のような<ディレクトリ名>.code-workspaceというファイルを作ってくれる。

.code-workspace
{
  "folders": [
    {
      "name": "Product",
      "path": "vscode"
    },
    {
      "name": "Documentation",
      "path": "vscode-docs"
    },
    {
      "name": "Extension generator",
      "path": "vscode-generator-code"
    }
  ]
}

あとはお好みでJest関連の設定を加えればOK。

.code-workspace
{
  "folders": [
    {
      "name": "root",
      "path": "."
    },
    {
      "name": "Product",
      "path": "vscode"
    },
    {
      "name": "Documentation",
      "path": "vscode-docs"
    },
    {
      "name": "Extension generator",
      "path": "vscode-generator-code"
    }
  ]
  "settings": {
    "jest.autoRun": {
      "watch": false,
      "onSave": "test-file"
    },
    "jest.jestCommandLine": "npm run test --",
    "jest.showCoverageOnLoad": true,
    "jest.disabledWorkspaceFolders": [
      "root",
    ]
  }
}

ファイルができたら、このファイルの右下らへんにいる、

スクリーンショット 2023-05-14 17.23.32.png

このボタンをクリックしてワークスペースを開き、あとはいつも通りJestの拡張機能を使ってテストを実行できる。

以上、モノレポのプロジェクトにて、VSCodeにおけるJestの拡張機能にハマった際の備忘録でした。

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?