Skip to content
Vitest 3
Main Navigation ガイド & API設定ブラウザモード高度なAPI
3.2.0
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

API

Node API

上級者向けAPI

Vitest API

TestProject

TestSpecification

Test Task API

TestCase

TestSuite

TestModule

TestCollection

プラグイン API

Runner API

レポーター

タスクのメタデータ

ガイド

テストの実行

レポーターの拡張

カスタムプール

Vitest の設定

テストAPIリファレンス

このページの内容

プラグイン API 3.1.0+ ​

WARNING

これは高度な API です。単にテストを実行したいだけであれば、おそらく必要ありません。主にライブラリ開発者向けの API です。

このガイドは、Vite プラグインの利用経験があることを前提としています。

Vitest はバージョン 3.1 から、実験的な configureVitest プラグインフックをサポートしています。この API に関するフィードバックは、GitHub でお待ちしております。

ts
import type { Vite, VitestPluginContext } from 'vitest/node';

export function plugin(): Vite.Plugin {
  return {
    name: 'vitest:my-plugin',
    configureVitest(context: VitestPluginContext) {
      // ...
    },
  };
}
ts
/// <reference types="vitest/config" />

import type { Plugin } from 'vite';

export function plugin(): Plugin {
  return {
    name: 'vitest:my-plugin',
    transform() {
      // ...
    },
    configureVitest(context) {
      // ...
    },
  };
}

TypeScript

Vitest は、Vite の型定義を Vite 名前空間を介して再エクスポートしており、これによってバージョン同期を維持できます。ただし、Vite と Vitest の両方でプラグインを作成している場合は、vite エントリポイントから Plugin 型を引き続き使用できます。configureVitest が正しく拡張されるように、vitest/config がどこかで参照されていることを確認してください。

ts
/// <reference types="vitest/config" />

reporter.onInit とは異なり、このフックは Vitest のライフサイクルの初期段階で実行され、coverage や reporters などの設定を変更できます。特に注目すべき点は、プラグインがグローバル設定ではなく、テストプロジェクト の設定内で定義されている場合に、そのテストプロジェクトからグローバル設定を操作できる点です。

コンテキスト ​

project ​

プラグインが関連付けられている現在のテストプロジェクト。

Browser Mode

ブラウザ機能を利用する場合、project.browser フィールドはまだ設定されていません。代わりにreporter.onBrowserInitイベントを使用してください。

vitest ​

グローバルなVitestインスタンス。vitest.config プロパティを直接変更することで、グローバル設定を変更できます。

ts
vitest.config.coverage.enabled = false;
vitest.config.reporters.push([['my-reporter', {}]]);

Config is Resolved

Vitest はすでに設定を解決しているため、一部の型は通常のユーザー設定とは異なる場合があります。これは、例えば setupFile のように、一部のプロパティが再度解決されないことも意味します。新しいファイルを追加する場合は、まず解決しておく必要があります。

この時点ではレポーターはまだ作成されていないため、vitest.reporters を変更しても上書きされてしまうため、効果がありません。独自のレポーターを注入する必要がある場合は、代わりに設定を変更してください。

injectTestProjects ​

ts
function injectTestProjects(
  config: TestProjectConfiguration | TestProjectConfiguration[]
): Promise<TestProject[]>;

このメソッドは、設定のグロブパターン、設定ファイルへのパス、またはインライン設定を受け入れます。解決済みのテストプロジェクト配列を返します。

ts
// カスタムエイリアス付きの単一プロジェクトを注入
const newProjects = await injectTestProjects({
  // `extends` を指定することで現在のプロジェクト設定を継承できます
  // 既存の名前を持つプロジェクトは作成できない点に注意してください。
  // そのため、カスタム名を定義するのが良い習慣です
  extends: project.vite.config.configFile,
  test: {
    name: 'my-custom-alias',
    alias: {
      customAlias: resolve('./custom-path.js'),
    },
  },
});

Projects are Filtered

Vitest は設定解決中にプロジェクトをフィルタリングするため、ユーザーがフィルタを定義している場合、注入されたプロジェクトは、そのフィルタに一致しない限り解決されない可能性があります。vitest.config.project オプションを更新することで、テストプロジェクトを常に含めるように設定できます。

ts
vitest.config.project.push('my-project-name');

なお、これはinjectTestProjectsメソッドで注入したプロジェクトにのみ影響します。

Referencing the Current Config

ユーザー設定を維持したい場合は、extends プロパティを指定することができます。他のすべてのプロパティは、ユーザーが定義した設定とマージされます。

プロジェクトの configFile は、Vite の設定において project.vite.config.configFile としてアクセスできます。

これは name も継承される点に注意してください。Vitest は同じ名前の複数のプロジェクトを許可しないため、エラーが発生します。異なる名前を指定していることを確認してください。現在の名前は project.name プロパティでアクセスでき、使用されているすべての名前は vitest.projects 配列で確認できます。

Pager
前のページTestCollection
次のページRunner API

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

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/advanced/api/plugin

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

Copyright (c) 2021-Present Vitest Team