Skip to content
Vitest 2
Main Navigation ガイドAPI設定ブラウザモード高度な
2.1.9
1.6.1
0.34.6

日本語

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
한국어
Italiano
Polski
Türkçe
čeština
magyar

日本語

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
한국어
Italiano
Polski
Türkçe
čeština
magyar

外観

Sidebar Navigation

Vitest の必要性

はじめに

特徴

ワークスペース

コマンドラインインターフェース

テストのフィルタリング

レポーター

カバレッジ

スナップショット

モック

型テスト

Vitest UI

ソース内テスト

テストコンテキスト

テスト環境

マッチャー拡張

IDE 連携機能

デバッグ

他のテストランナーとの比較

マイグレーションガイド

よくあるエラー

Profiling Test Performance

パフォーマンスの改善

このページの内容

ワークスペース ​

サンプルプロジェクト

GitHub - Play Online

Vitest は、単一の Vitest プロセス内で複数のプロジェクト設定を定義する機能を提供します。この機能は、モノレポのセットアップに特に有用ですが、resolve.alias、plugins、test.browser など、異なる設定でテストを実行する際にも利用できます。

ワークスペースの定義 ​

ワークスペースのルートディレクトリ(ルート設定ファイルまたは作業ディレクトリと同じフォルダ内)には、vitest.workspace または vitest.projects ファイルが含まれている必要があります。Vitest はこのファイルで ts、js、json の拡張子をサポートしています。

命名規則

この機能は workspace と呼ばれ、workspaces (末尾に "s" なし) ではないことに注意してください。

ワークスペース設定ファイルは、プロジェクトを参照するファイルまたはグロブパターンのリストをデフォルトエクスポートする必要があります。たとえば、プロジェクトを含む packages という名前のフォルダがある場合、この設定ファイルでワークスペースを定義できます。

ts
export default ['packages/*'];

Vitest は、packages 内のすべてのフォルダを、内部に設定ファイルがなくても個別のプロジェクトとして扱います。Vitest 2.1 以降、このグロブパターンがファイルに一致する場合、その名前に vitest が含まれていなくても Vitest の設定ファイルと見なされます。

WARNING

Vitest は、ルートの vitest.config ファイルを、ワークスペース設定で明示的に指定しない限り、ワークスペースプロジェクトとして扱いません。したがって、ルート設定は reporters や coverage などのグローバルオプションにのみ影響します。

設定ファイルを使用してプロジェクトを参照することもできます。

ts
export default ['packages/*/vitest.config.{e2e,unit}.ts'];

このパターンは、拡張子の前に e2e または unit を含む vitest.config ファイルを持つプロジェクトのみを対象とします。

インライン設定を使用してプロジェクトを定義することも可能です。ワークスペースファイルは両方の構文を同時にサポートしています。

ts
import { defineWorkspace } from 'vitest/config';

// defineWorkspace は優れた型ヒントの DX を提供します
export default defineWorkspace([
  // `packages` フォルダ内のすべてのフォルダとファイルに一致します
  'packages/*',
  {
    // 2つの設定をマージするために "extends" を追加します
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // インライン設定を使用する場合は名前を定義することをお勧めします
      name: 'happy-dom',
      environment: 'happy-dom',
    },
  },
  {
    test: {
      include: ['tests/**/*.{node}.test.{ts,js}'],
      name: 'node',
      environment: 'node',
    },
  },
]);

WARNING

すべてのプロジェクトは一意の名前を持つ必要があります。そうでない場合、Vitest はエラーをスローします。インライン設定で名前が指定されていない場合、Vitest は数値を割り当てます。グロブ構文で定義されたプロジェクト設定の場合、Vitest はデフォルトで最も近い package.json ファイルの「name」プロパティを使用するか、存在しない場合はフォルダ名を使用します。

インライン設定を使用しない場合は、ルートディレクトリに小さな JSON ファイルを作成できます。

json
["packages/*"]

ワークスペースプロジェクトはすべての設定プロパティをサポートしているわけではありません。より良い型安全のために、プロジェクト設定ファイル内では defineConfig の代わりに defineProject メソッドを使用してください。

ts
// @errors: 2769
import { defineProject } from 'vitest/config';

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" はプロジェクト設定ではサポートされていないため、
    // エラーが表示されます
    reporters: ['json'],
  },
});

テストの実行 ​

ワークスペース内でテストを実行するには、ルートの package.json にスクリプトを定義します。

json
{
  "scripts": {
    "test": "vitest"
  }
}

これで、パッケージマネージャーを使用してテストを実行できます。

bash
npm run test
bash
yarn test
bash
pnpm run test
bash
bun test

単一のプロジェクト内でのみテストを実行する必要がある場合は、--project CLI オプションを使用します。

bash
npm run test --project e2e
bash
yarn test --project e2e
bash
pnpm run test --project e2e
bash
bun test --project e2e

TIP

CLI オプション --project は、複数のプロジェクトをフィルタリングするために複数回使用できます。

bash
npm run test --project e2e --project unit
bash
yarn test --project e2e --project unit
bash
pnpm run test --project e2e --project unit
bash
bun test --project e2e --project unit

設定 ​

設定オプションはルートレベルの設定ファイルから継承されません。共有設定ファイルを作成し、それをプロジェクト設定と自分でマージできます。

ts
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';

export default mergeConfig(
  configShared,
  defineProject({
    test: {
      environment: 'jsdom',
    },
  })
);

defineWorkspace レベルでは、extends オプションを使用してルートレベルの設定から継承できます。すべてのオプションがマージされます。

ts
import { defineWorkspace } from 'vitest/config';

export default defineWorkspace([
  {
    extends: './vitest.config.ts',
    test: {
      name: 'unit',
      include: ['**/*.unit.test.ts'],
    },
  },
  {
    extends: './vitest.config.ts',
    test: {
      name: 'integration',
      include: ['**/*.integration.test.ts'],
    },
  },
]);

一部の設定オプションはプロジェクト設定では許可されていません。特に次のとおりです。

  • coverage: カバレッジはワークスペース全体に対して行われます
  • reporters: ルートレベルのレポーターのみがサポートされます
  • resolveSnapshotPath: ルートレベルのリゾルバーのみが尊重されます
  • テストランナーに影響しないその他のすべてのオプション

TIP

プロジェクト設定内でサポートされていないすべての設定オプションは、"Config" ガイドで * の記号でマークされています。

Pager
前のページ特徴
次のページコマンドラインインターフェース

MITライセンス の下で公開されています。

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/guide/workspace

MITライセンス の下で公開されています。

Copyright (c) 2024 Mithril Contributors