Vitest の設定
設定
vitest は、Vite アプリケーションのプラグインや設定に合わせて、ルートディレクトリにある vite.config.ts を読み込みます。テスト用に異なる設定を使用したい場合、またはメインのアプリケーションが Vite に依存していない場合は、以下のいずれかの方法を選択できます。
vitest.config.tsを作成する。これはvite.config.tsよりも優先度が高く、設定を上書きします。--configオプションを CLI に渡す。例:vitest --config ./path/to/vitest.config.tsprocess.env.VITESTまたはdefineConfigのmodeプロパティ(オーバーライドされない場合はtest/benchmarkに設定されます)を使用して、vite.config.tsで条件に応じて異なる設定を適用する。
vitest 自体を設定するには、Vite の設定に test プロパティを追加する必要があります。defineConfig をインポートする場合は、設定ファイルの先頭に トリプルスラッシュコマンド を使用します。これにより、Vitest の型定義への参照を追加する必要があります。
vite から defineConfig を使用する場合は、以下のようにします。
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ...
},
});vitest/config から defineConfig を使用する場合は、以下のようにします。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
// ...
},
});必要に応じて、Vitest のデフォルトオプションを取得して拡張することができます。
import { configDefaults, defineConfig } from 'vitest/config';
export default defineConfig({
test: {
exclude: [...configDefaults.exclude, 'packages/template/*'],
},
});別個の vitest.config.js を使用する場合は、必要に応じて別の設定ファイルから Vite のオプションを拡張することもできます。
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';
export default mergeConfig(
viteConfig,
defineConfig({
test: {
exclude: ['packages/template/*'],
},
})
);WARNING
mergeConfig ヘルパーは Vitest v0.30.0 以降で使用可能です。それより前のバージョンを使用している場合は、vite から直接インポートできます。
Vite の設定が関数として定義されている場合、次の例のように設定できます。
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';
export default defineConfig(configEnv =>
mergeConfig(
viteConfig(configEnv),
defineConfig({
test: {
exclude: ['packages/template/*'],
},
})
)
);オプション
TIP
以下のオプションに加え、Vite の設定オプションも使用できます。たとえば、グローバル変数を定義する define や、エイリアスを定義する resolve.alias などです。
TIP
ワークスペース プロジェクト設定内でサポートされていないすべての設定オプションには、* が付いています。
include
- 型:
string[] - デフォルト:
['**/*.{test,spec}.?(c|m)[jt]s?(x)']
テストの実行に含めるファイルを指定します。glob パターンを使用します。
exclude
- 型:
string[] - デフォルト:
['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**', '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*']
テストの実行から除外するファイルを指定します。glob パターンを使用します。
includeSource
- 型:
string[] - デフォルト:
[]
ソースコード内に記述されたテストファイルを含めるための glob パターンを指定します。
定義すると、Vitest は import.meta.vitest を含むファイルをテスト対象とします。
server
- 型:
{ sourcemap?, deps?, ... } - バージョン: Vitest 0.34.0 以降
Vite-Node サーバーのオプションを指定します。
server.sourcemap
- 型:
'inline' | boolean - デフォルト:
'inline'
モジュールにインラインソースマップを挿入します。
server.debug
- 型:
{ dumpModules?, loadDumppedModules? }
Vite-Node デバッガーのオプション。
server.debug.dumpModules
- 型:
boolean | string
変換されたモジュールをファイルシステムにダンプします。文字列を渡すと、指定されたパスにダンプされます。
server.debug.loadDumppedModules
- 型:
boolean
ダンプされたモジュールが存在する場合、ファイルシステムから読み込みます。ファイルシステムからダンプ結果を変更してデバッグするのに役立ちます。
server.deps
- 型:
{ external?, inline?, ... }
依存関係の解決を制御します。
server.deps.external
- 型:
(string | RegExp)[] - デフォルト:
[/\/node_modules\//]
外部化とは、Vite がパッケージを変換せずに、ネイティブ Node.js で直接使用することを意味します。外部化された依存関係は、Vite のトランスフォーマーとリゾルバーには適用されないため、リロード時に HMR をサポートしません。デフォルトでは、node_modules 内のすべてのパッケージが外部化されます。
これらのオプションは、node_modules に記述されているパッケージ名をサポートします。また、deps.moduleDirectories 内で指定されているパッケージ名もサポートします。たとえば、packages/some-name 内にあるパッケージ @company/some-name は some-name として指定する必要があり、packages は deps.moduleDirectories に含める必要があります。基本的に、Vitest は実際のパッケージ名ではなく、常にファイルパスをチェックします。
正規表現を使用する場合、Vitest はパッケージ名ではなく、ファイルパス と照合します。
server.deps.inline
- 型:
(string | RegExp)[] | true - デフォルト:
[]
Vite はインラインモジュールを処理します。これは、(Node.js が直接処理できない)ESM 形式の .js ファイルを提供するパッケージを処理するのに役立ちます。
true の場合、すべての依存関係がインライン化されます。ssr.noExternal で指定されたすべての依存関係は、デフォルトでインライン化されます。
server.deps.fallbackCJS
- 型:
boolean - デフォルト:
false
依存関係が有効な ESM パッケージである場合、パスに基づいて対応する CJS バージョンを検索します。これは、依存関係に誤った ESM ファイルがある場合に役立つことがあります。
パッケージが ESM モードと CJS モードで異なる動作をする場合、予期せぬ問題が発生する可能性があります。
server.deps.cacheDir
- 型:
string - デフォルト:
'node_modules/.vite'
キャッシュファイルを保存するディレクトリ。
deps
- 型:
{ optimizer?, registerNodeLoader?, ... }
依存関係の解決を制御します。
deps.optimizer
- 型:
{ ssr?, web? } - バージョン: Vitest 0.34.0 以降
- 参照: Dep Optimization Options
依存関係の最適化を有効にすることができます。テストが多い場合は、パフォーマンスが向上する可能性があります。Vitest 0.34.0 より前は、deps.experimentalOptimizer という名前でした。
Vitest が include にリストされている外部ライブラリを検出すると、esbuild によって単一のファイルにバンドルされ、1 つのモジュールとしてインポートされます。これにはいくつかの理由があります。
- 多くのインポートを含むパッケージのインポートはコストがかかります。それらを 1 つのファイルにバンドルすることで、多くの時間を節約できます。
- UI ライブラリのインポートは、Node.js 内で実行することを意図していないため、コストがかかります。
alias設定がバンドルされたパッケージ内で尊重されるようになりました。- テストのコードは、ブラウザで実行される方法に近い方法で実行されます。
deps.optimizer?.[mode].include オプションのパッケージのみがバンドルされることに注意してください (Svelte のように、一部のプラグインはこれを自動的に設定します)。Vite ドキュメントで利用可能なオプションの詳細を読むことができます (Vitest は disable および noDiscovery オプションをサポートしていません)。デフォルトでは、Vitest は jsdom および happy-dom 環境に optimizer.web を使用し、node および edge 環境に optimizer.ssr を使用しますが、transformMode で設定可能です。
このオプションは、optimizeDeps 設定も継承します (web の場合、Vitest は optimizeDeps を拡張し、ssr の場合は ssr.optimizeDeps を拡張します)。deps.optimizer で include/exclude オプションを再定義すると、テストの実行時に optimizeDeps が拡張されます。Vitest は、exclude にリストされている場合、include から同じオプションを自動的に削除します。
TIP
コードは実際には cacheDir または test.cache.dir ディレクトリにキャッシュされているため、node_modules 内のコードを直接編集しても反映されません。console.log ステートメントでデバッグする場合は、直接編集するか、deps.optimizer?.[mode].force オプションを使用して強制的に再バンドルします。
deps.optimizer.{mode}.enabled
- 型:
boolean - デフォルト: Vite 4.3.2 以上を使用している場合は
true、それ以外の場合はfalse
依存関係の最適化を有効にします。
WARNING
このオプションは、Vite 4.3.2 以降でのみ動作します。
deps.web
- 型:
{ transformAssets?, ... } - バージョン: Vitest 0.34.2 以降
変換モードが web に設定されている場合に外部ファイルに適用されるオプション。デフォルトでは、jsdom と happy-dom は web モードを使用し、node と edge 環境は ssr 変換モードを使用するため、これらのオプションはこれらの環境内のファイルには影響しません。
通常、node_modules 内のファイルは外部化されますが、これらのオプションは server.deps.external のファイルにも影響します。
deps.web.transformAssets
- 型:
boolean - デフォルト:
true
Vitest がアセットファイル (.png、.svg、.jpg など) を Vite がブラウザで行うように処理し、解決するかどうかを指定します。
クエリが指定されていない場合、このモジュールにはアセットへのパスに等しいデフォルトのエクスポートがあります。
WARNING
現時点では、このオプションは experimentalVmThreads プールでのみ動作します。
deps.web.transformCss
- 型:
boolean - デフォルト:
true
Vitest は CSS ファイル (.css、.scss、.sass など) を Vite がブラウザで行うように処理し、解決するかどうかを指定します。
CSS ファイルが css オプションで無効になっている場合、このオプションは ERR_UNKNOWN_FILE_EXTENSION エラーを抑制するだけです。
WARNING
現時点では、このオプションは experimentalVmThreads プールでのみ動作します。
deps.web.transformGlobPattern
- 型:
RegExp | RegExp[] - デフォルト:
[]
変換する必要がある外部ファイルに一致する正規表現パターン。
デフォルトでは、node_modules 内のファイルは外部化され、変換されません。ただし、CSS またはアセットであり、対応するオプションが無効になっていない場合は除きます。
WARNING
現時点では、このオプションは experimentalVmThreads プールでのみ動作します。
deps.registerNodeLoader*
- 型:
boolean - デフォルト:
false
実験的な Node ローダーを使用して、Vite の解決アルゴリズムを使用して外部化されたファイル内のインポートを解決します。
無効にすると、alias と <plugin>.resolveId は外部化されたパッケージ (デフォルトでは node_modules) 内のインポートに影響しません。
deps.interopDefault
- 型:
boolean - デフォルト:
true
CommonJS モジュールの default エクスポートを、名前付きエクスポートとして扱います。一部の依存関係は CJS モジュールのみをバンドルし、require の代わりに import 構文を使用してパッケージがインポートされるときに Node.js が静的に分析できる名前付きエクスポートを使用しません。Node 環境で名前付きエクスポートを使用してこのような依存関係をインポートすると、次のエラーが表示されます。
import { read } from 'fs-jetpack';
^^^^
SyntaxError: Named export 'read' not found. The requested module 'fs-jetpack' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export.Vitest は静的分析を行わず、コードを実行する前に失敗することはできないため、この機能が無効になっている場合、テストを実行するときにこのエラーが表示される可能性が高くなります。
TypeError: createAsyncThunk is not a function
TypeError: default is not a functionデフォルトでは、Vitest はこれをバイパスするためにバンドラーを使用していると想定し、失敗しませんが、コードが処理されない場合は、この動作を手動で無効にできます。
deps.moduleDirectories
- 型:
string[] - デフォルト:
['node_modules']
モジュールディレクトリとして扱う必要があるディレクトリのリスト。この設定オプションは、vi.mock の動作に影響します。ファクトリが指定されていない場合、モック対象のパスが moduleDirectories のいずれかの値と一致すると、Vitest はプロジェクトの ルート ディレクトリにある __mocks__ フォルダを検索し、モックを解決しようとします。
このオプションは、依存関係を外部化するときにファイルをモジュールとして扱う必要があるかどうかにも影響します。デフォルトでは、Vitest は Vite 変換ステップをバイパスして、ネイティブ Node.js で外部モジュールをインポートします。
このオプションを設定すると、デフォルト値が 上書き されます。node_modules も検索対象に含める場合は、明示的に指定する必要があります。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
deps: {
moduleDirectories: ['node_modules', path.resolve('../../packages')],
},
},
});runner
- 型:
VitestRunnerConstructor - デフォルト: テスト実行時は
node、ベンチマーク実行時はbenchmark
カスタムテストランナーへのパス。これは高度な機能であり、カスタムライブラリランナーで使用する必要があります。ドキュメント で詳細を読むことができます。
benchmark
- 型:
{ include?, exclude?, ... }
vitest bench の実行時に使用されるオプション。
benchmark.include
- 型:
string[] - デフォルト:
['**/*.{bench,benchmark}.?(c|m)[jt]s?(x)']
ベンチマークテストファイルの include glob
benchmark.exclude
- 型:
string[] - デフォルト:
['node_modules', 'dist', '.idea', '.git', '.cache']
ベンチマークテストファイルの exclude glob
benchmark.includeSource
- 型:
string[] - デフォルト:
[]
ソースコード内に記述されたベンチマークテストファイルの include glob。このオプションは、includeSource と似ています。
定義すると、Vitest は import.meta.vitest を含むファイルを実行対象とします。
benchmark.reporters
- 型:
Arrayable<BenchmarkBuiltinReporters | Reporter> - デフォルト:
'default'
出力に使用するカスタムレポーターを指定します。組み込みのレポート名、レポーターのインスタンス、またはカスタムレポーターへのパスを 1 つ以上指定できます。
benchmark.outputFile
- 型:
string | Record<string, string>
--reporter=json オプションも指定されている場合は、ベンチマーク結果をファイルに書き込みます。 文字列の代わりにオブジェクトを提供することで、複数のレポーターを使用する場合に個別の出力を定義できます。
CLI コマンドでオブジェクトを指定するには、次の構文を使用します: --outputFile.json=./path --outputFile.junit=./other-path。
alias
- 型:
Record<string, string> | Array<{ find: string | RegExp, replacement: string, customResolver?: ResolverFunction | ResolverObject }>
テスト内で実行するときにカスタムエイリアスを定義します。これらは resolve.alias のエイリアスとマージされます。
globals
- 型:
boolean - デフォルト:
false - CLI:
--globals,--globals=false
デフォルトでは、vitest は明示性を高めるためにグローバル API を提供しません。Jest のようにグローバルに API を使用する場合は、--globals オプションを CLI に渡すか、設定に globals: true を追加できます。
// vite.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: true,
},
});TypeScript をグローバル API で動作させるには、tsconfig.json の types フィールドに vitest/globals を追加します。
// tsconfig.json
{
"compilerOptions": {
"types": ["vitest/globals"]
}
}プロジェクトで unplugin-auto-import をすでに使用している場合は、これらの API を自動インポートするために直接使用することもできます。
// vite.config.ts
import { defineConfig } from 'vitest/config';
import AutoImport from 'unplugin-auto-import/vite';
export default defineConfig({
plugins: [
AutoImport({
imports: ['vitest'],
dts: true, // generate TypeScript declaration
}),
],
});environment
- Type:
'node' | 'jsdom' | 'happy-dom' | 'edge-runtime' | string - Default:
'node' - CLI:
--environment=<env>
テストに使用する環境を指定します。Vitest のデフォルト環境は Node.js 環境です。Web アプリケーションをテストする場合は、jsdom または happy-dom を使用して、ブラウザのような環境をエミュレートできます。エッジ関数をテストする場合は、edge-runtime 環境を使用できます。
ファイル内の特定のテストに対して異なる環境を指定するには、ファイルの先頭に @vitest-environment のドキュメントブロックまたはコメントを追加します。
ドキュメントブロックスタイル:
/**
* @vitest-environment jsdom
*/
test('このテストファイルでは jsdom を使用する', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});コメントスタイル:
// @vitest-environment happy-dom
test('このテストファイルでは happy-dom を使用する', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});Jest との互換性のために、@jest-environment も使用できます。
/**
* @jest-environment jsdom
*/
test('このテストファイルでは jsdom を使用する', () => {
const element = document.createElement('div');
expect(element).not.toBeNull();
});--threads=false フラグを指定して Vitest を実行している場合、テストは node、jsdom、happy-dom、edge-runtime、custom environments の順に実行されます。つまり、同じ環境のテストはグループ化され、順番に実行されます。
0.23.0 以降では、カスタム環境を定義することもできます。組み込み環境以外を使用する場合、Vitest は vitest-environment-${name} パッケージのロードを試みます。そのパッケージは、Environment 型のオブジェクトをエクスポートする必要があります。
import type { Environment } from 'vitest';
export default <Environment>{
name: 'custom',
transformMode: 'ssr',
setup() {
// カスタムセットアップ
return {
teardown() {
// この環境で実行されたすべてのテストの後に呼び出される
},
};
},
};Vitest は、拡張を容易にするために、vitest/environments エントリーを通じて builtinEnvironments も公開しています。環境の拡張の詳細については、ガイドを参照してください。
environmentOptions
- Type:
Record<'jsdom' | string, unknown> - Default:
{}
これらのオプションは、現在の environment の setup メソッドに渡されます。デフォルトでは、JSDOM をテスト環境として使用している場合にのみ、JSDOM オプションを設定できます。
environmentMatchGlobs
- Type:
[string, EnvironmentName][] - Default:
[]
グロブパターンに基づいて環境を自動的に割り当てます。最初にマッチしたものが選択されます。
例:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
environmentMatchGlobs: [
// tests/dom ディレクトリ内のすべてのテストは jsdom で実行される
['tests/dom/**', 'jsdom'],
// tests/ ディレクトリ内の .edge.test.ts で終わるすべてのテストは edge-runtime で実行される
['**/*.edge.test.ts', 'edge-runtime'],
// ...
],
},
});poolMatchGlobs
- Type:
[string, 'threads' | 'child_process' | 'experimentalVmThreads'][] - Default:
[] - Version: Since Vitest 0.29.4
グロブパターンに基づいて、テストを実行するプールを自動的に割り当てます。最初にマッチしたものが使用されます。
例:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
poolMatchGlobs: [
// "worker-specific" ディレクトリ内のすべてのテストは、`--threads` を有効にしたかのようにワーカー内で実行される
['**/tests/worker-specific/**', 'threads'],
// "browser" ディレクトリ内のすべてのテストは、実際のブラウザで実行される
['**/tests/browser/**', 'browser'],
// 他のすべてのテストは、他のグロブを指定しない限り、"browser.enabled" および "threads" オプションに基づいて実行される
// ...
],
},
});update*
- Type:
boolean - Default:
false - CLI:
-u,--update,--update=false
スナップショットファイルを更新します。これにより、変更されたすべてのスナップショットが更新され、不要になったスナップショットが削除されます。
watch*
- Type:
boolean - Default:
true - CLI:
-w,--watch,--watch=false
ウォッチモードを有効にします。
root
- Type:
string - CLI:
-r <path>,--root=<path>
プロジェクトのルートディレクトリ。
reporters*
- Type:
Reporter | Reporter[] - Default:
'default' - CLI:
--reporter=<name>,--reporter=<name1> --reporter=<name2>
出力に使用するカスタムレポーター。Reporter インスタンスまたは、組み込みレポーターを選択するための文字列を指定できます。
'default'- スイートが成功した場合に折りたたみます。'basic'- CI 環境におけるデフォルトレポーターのようなレポーターを提供します。'verbose'- タスクツリー全体を表示したままにします。'dot'- 各タスクを単一のドットとして表示します。'junit'- JUnit XML レポーター (testsuitesタグ名をVITEST_JUNIT_SUITE_NAME環境変数で、classnameタグプロパティをVITEST_JUNIT_CLASSNAMEで構成できます)。'json'- 単純な JSON サマリーを提供します。'html'-@vitest/uiに基づいて HTML レポートを出力します。'hanging-process'- Vitest がプロセスを安全に終了できない場合に、ハングしているプロセスのリストを表示します。これは負荷の高い操作になる可能性があるため、Vitest が一貫してプロセスを終了できない場合にのみ有効にしてください。- カスタムレポーターのパス (例:
'./path/to/reporter.ts','@scope/reporter')
outputFile*
- Type:
string | Record<string, string> - CLI:
--outputFile=<path>,--outputFile.json=./path
--reporter=json、--reporter=html、または --reporter=junit オプションも指定されている場合に、テスト結果をファイルに書き込みます。 文字列の代わりにオブジェクトを指定することで、複数のレポーターを使用する場合に個々の出力を定義できます。
experimentalVmThreads
- Type:
boolean - CLI:
--experimentalVmThreads,--experimental-vm-threads - Version: Since Vitest 0.34.0
ワーカープールで VM コンテキスト (サンドボックス化された環境内) を使用してテストを実行します。
これにより、テストの実行が高速化されますが、ESM コード の実行時に VM モジュールが不安定になる可能性があります。また、テストはメモリリークする可能性があります。それを回避するには、experimentalVmWorkerMemoryLimit の値を手動で編集することを検討してください。
WARNING
サンドボックスでコードを実行することには、いくつかの利点 (テストの高速化) がありますが、多くの欠点もあります。
- (
fs、pathなど) などのネイティブモジュール内のグローバル変数は、テスト環境に存在するグローバル変数とは異なります。その結果、これらのネイティブモジュールによってスローされるエラーは、コードで使用されているエラーコンストラクターとは異なるエラーコンストラクターを参照します。
try {
fs.writeFileSync('/doesnt exist');
} catch (err) {
console.log(err instanceof Error); // false
}- ES モジュールをインポートすると、それらが無期限にキャッシュされ、多数のコンテキスト (テストファイル) がある場合にメモリリークが発生します。Node.js にはそのキャッシュをクリアする API はありません。
- サンドボックス環境では、グローバル変数へのアクセスに 時間がかかります。
このオプションを使用する場合は、これらの問題に注意してください。Vitest チームでは、この問題を修正できません。
experimentalVmWorkerMemoryLimit
- Type:
string | number - CLI:
--experimentalVmWorkerMemoryLimit,--experimental-vm-worker-memory-limit - Default:
1 / CPU Cores - Version: Since Vitest 0.34.0
ワーカーが再利用される前に、メモリ制限を指定します。この値は環境に大きく依存するため、デフォルト値を使用せず、手動で指定することをお勧めします。
このオプションは、VM コンテキスト でテストを実行するワーカーにのみ影響します。
TIP
実装は、Jest の workerIdleMemoryLimit に基づいています。
制限はさまざまな方法で指定でき、結果がどうであれ、Math.floor を使用して整数値に変換されます。
<= 1- 値はシステムメモリの割合であると見なされます。したがって、0.5 はワーカーのメモリ制限をシステムメモリの半分に設定します。\> 1- 固定バイト値であると見なされます。前のルールにより、1 バイトの値が必要な場合 (理由はわかりませんが)、1.1 を使用できます。単位付き
50%- 上記のように、システムメモリの割合。100KB、65MBなど - 固定メモリ制限を示す単位付き。K/KB- キロバイト (x1000)KiB- キビバイト (x1024)M/MB- メガバイトMiB- メビバイトG/GB- ギガバイトGiB- ギビバイト
WARNING
システムメモリが正しく報告されないため、割合ベースのメモリ制限は Linux CircleCI ワーカーでは機能しません。
threads
- Type:
boolean - Default:
true - CLI:
--threads,--threads=false
tinypool (Piscina の軽量フォーク) を使用してマルチスレッドを有効にします。Vitest 0.29.0 より前は、このオプションが無効になっている場合でも、Vitest はワーカースレッド内でテストを実行していました。0.29.0 以降では、このオプションが無効になっている場合、Vitest は child_process を使用してプロセスを生成し、その中でテストを実行します。つまり、ワーカー内では使用できなかった process.chdir やその他の API を使用できます。以前の動作に戻したい場合は、代わりに --single-thread オプションを使用してください。
このオプションを無効にすると、すべてのテストが複数の子プロセス内で実行されます。
singleThread
- Type:
boolean - Default:
false - Version: Since Vitest 0.29.0
同じ環境のすべてのテストを単一のワーカースレッド内で実行します。これにより、組み込みのモジュール分離が無効になります (ソースコードまたは インライン化 されたコードは、テストごとに再評価されます) が、テストのパフォーマンスが向上する可能性があります。Vitest 0.29.0 より前は、これは --no-threads を使用するのと同じでした。
WARNING
このオプションはテストを次々に実行するように強制しますが、Jest の --runInBand とは異なります。Vitest は、テストを並行して実行するだけでなく、分離機構を提供するためにもワーカーを使用します。このオプションを無効にすると、テストは順番に実行されますが、同じグローバルコンテキストで実行されるため、自分で分離を提供する必要があります。
グローバル状態 (フロントエンドフレームワークは通常そうします) に依存している場合、またはコードがテストごとに個別に定義される環境に依存している場合は、あらゆる種類の問題が発生する可能性があります。ただし、グローバル状態に依存しないテストや、グローバル状態への依存を容易に回避できるテストでは、速度が向上する可能性があります(最大 3 倍高速)。
maxThreads*
- Type:
number - Default: 利用可能な CPU 数
最大スレッド数。VITEST_MAX_THREADS 環境変数も使用できます。
minThreads*
- Type:
number - Default: 利用可能な CPU 数
最小スレッド数。VITEST_MIN_THREADS 環境変数も使用できます。
useAtomics*
- Type:
boolean - Default:
false - Version: Since Vitest 0.28.3
Atomics を使用してスレッドを同期します。
これにより、パフォーマンスが向上する場合がありますが、古い Node バージョンではセグメンテーションフォールトが発生する可能性があります。
testTimeout
- Type:
number - Default:
5000 - CLI:
--test-timeout=5000
テストのデフォルトのタイムアウト (ミリ秒単位)。
hookTimeout
- Type:
number - Default:
10000
フックのデフォルトのタイムアウト (ミリ秒単位)。
teardownTimeout*
- Type:
number - Default:
10000
Vitest がシャットダウンするときにクローズを待機するデフォルトのタイムアウト (ミリ秒単位)。
silent*
- Type:
boolean - Default:
false - CLI:
--silent,--silent=false
テストのコンソール出力を抑制します。
setupFiles
- Type:
string | string[]
セットアップファイルへのパス。これらは各テストファイルの前に実行されます。
INFO
セットアップファイルを変更した場合、すべてのテストが再実行されます。
process.env.VITEST_POOL_ID (整数形式の文字列) を使用して、スレッドを区別できます (threads: false で実行されている場合は常に '1' になります)。
TIP
--threads=false を実行している場合、このセットアップファイルは同じグローバルスコープで複数回実行されることに注意してください。つまり、各テストの前に同じグローバルオブジェクトにアクセスするため、必要以上に同じ処理を繰り返さないように注意してください。
たとえば、グローバル変数に依存する場合があります。
import { config } from '@some-testing-lib';
if (!globalThis.defined) {
config.plugins = [myCoolPlugin];
computeHeavyThing();
globalThis.defined = true;
}
// hooks are reset before each suite
afterEach(() => {
cleanup();
});
globalThis.resetBeforeEachTest = true;globalSetup
- Type:
string | string[]
プロジェクトルートからのグローバルセットアップファイルへのパス。
グローバルセットアップファイルは、名前付き関数 setup と teardown、または teardown 関数を返す default 関数をエクスポートできます (例)。
INFO
複数の globalSetup ファイルが可能です。setup と teardown は順番に実行され、teardown は逆順に実行されます。
WARNING
グローバルセットアップは別のグローバルスコープで実行されるため、テストからここで定義した変数にアクセスできないことに注意してください。
watchExclude*
- Type:
string[] - Default:
['**/node_modules/**', '**/dist/**']
ウォッチの再実行をトリガーしないファイルパスのグロブパターン。
forceRerunTriggers*
- Type:
string[] - Default:
['**/package.json/**', '**/vitest.config.*/**', '**/vite.config.*/**']
テストスイート全体の再実行をトリガーするファイルパスのグロブパターン。--changed 引数と組み合わせると、トリガーが git diff に見つかった場合にテストスイート全体が実行されます。
Vite がモジュール依存関係グラフを構築できないため、CLI コマンドの呼び出しをテストする際に役立ちます。
test('execute a script', async () => {
// Vitest は、`dist/index.js` の内容が変更された場合、このテストを再実行できません
await execa('node', ['dist/index.js']);
});TIP
ファイルが watchExclude によって除外されていないことを確認してください。
isolate
- Type:
boolean - Default:
true - CLI:
--isolate,--isolate=false
各テストファイルの実行環境を分離します。--threads オプションが無効な場合は動作しません。
このオプションは、experimentalVmThreads には影響しません。
coverage*
カバレッジ収集には、v8、istanbul、または カスタムカバレッジソリューション を使用できます。
CLI でカバレッジオプションを指定するには、ドット表記を使用します。
npx vitest --coverage.enabled --coverage.provider=istanbul --coverage.allWARNING
ドット表記でカバレッジオプションを使用する場合は、必ず --coverage.enabled を指定してください。--coverage オプションのみを指定しても有効になりません。
coverage.provider
- Type:
'v8' | 'istanbul' | 'custom' - Default:
'v8' - CLI:
--coverage.provider=<provider>
カバレッジ収集ツールを選択します。
coverage.enabled
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.enabled,--coverage.enabled=false
カバレッジ収集を有効にします。--coverage CLI オプションで上書きできます。
coverage.include
- Type:
string[] - Default:
['**'] - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.include=<path>,--coverage.include=<path1> --coverage.include=<path2>
カバレッジ対象とするファイルのグロブパターンリスト。
coverage.extension
- Type:
string | string[] - Default:
['.js', '.cjs', '.mjs', '.ts', '.mts', '.cts', '.tsx', '.jsx', '.vue', '.svelte'] - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.extension=<extension>,--coverage.extension=<extension1> --coverage.extension=<extension2>
カバレッジ対象とするファイルの拡張子リスト。
coverage.exclude
- Type:
string[] - Default:
[
'coverage/**',
'dist/**',
'packages/*/test?(s)/**',
'**/*.d.ts',
'**/virtual:*',
'**/__x00__*',
'**/\x00*',
'cypress/**',
'test?(s)/**',
'test?(-*).?(c|m)[jt]s?(x)',
'**/*{.,-}{test,spec}.?(c|m)[jt]s?(x)',
'**/__tests__/**',
'**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*',
'**/vitest.{workspace,projects}.[jt]s?(on)',
'**/.{eslint,mocha,prettier}rc.{?(c|m)js,yml}',
];- Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.exclude=<path>,--coverage.exclude=<path1> --coverage.exclude=<path2>
カバレッジから除外するファイルを指定するグロブパターンのリスト。
coverage.all
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.all,--coverage.all=false
テストされていないファイルも含めて、すべてのファイルをカバレッジレポートに含めるかどうか。
coverage.clean
- Type:
boolean - Default:
true - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.clean,--coverage.clean=false
テスト実行前に、既存のカバレッジ結果を削除します。
coverage.cleanOnRerun
- Type:
boolean - Default:
true - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.cleanOnRerun,--coverage.cleanOnRerun=false
watch モードで再実行する際に、カバレッジレポートを削除します。
coverage.reportsDirectory
- Type:
string - Default:
'./coverage' - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.reportsDirectory=<path>
カバレッジレポートを書き出すディレクトリ。
coverage.reporter
- Type:
string | string[] | [string, {}][] - Default:
['text', 'html', 'clover', 'json'] - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.reporter=<reporter>,--coverage.reporter=<reporter1> --coverage.reporter=<reporter2>
使用するカバレッジレポーター。利用可能なレポーターの詳細なリストについては、istanbul documentation を参照してください。レポーター固有のオプションについては、@types/istanbul-reporter を参照してください。
レポーターには以下の 3 つの種類があります。
- 単一のレポーター:
{ reporter: 'html' } - オプションなしの複数のレポーター:
{ reporter: ['html', 'json'] } - レポーターオプション付きの単一または複数のレポーター: ts
{ reporter: [ ['lcov', { projectRoot: './src' }], ['json', { file: 'coverage.json' }], ['text'], ]; }
Vitest 0.31.0 以降では、Vitest UI でカバレッジレポートを確認できます。詳細については、Vitest UI Coverage を参照してください。
coverage.reportOnFailure
- Type:
boolean - Default:
false(Vitest0.34.0以降) - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.reportOnFailure,--coverage.reportOnFailure=false - Version: Vitest 0.31.2 以降
テストが失敗した場合でもカバレッジレポートを生成します。
coverage.allowExternal
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.allowExternal,--coverage.allowExternal=false
プロジェクトの root ディレクトリ外にあるファイルのカバレッジを収集します。
coverage.skipFull
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.skipFull,--coverage.skipFull=false
ステートメント、ブランチ、関数のカバレッジがすべて 100% のファイルを表示しないようにします。
coverage.perFile
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.perFile,--coverage.perFile=false
ファイルごとにカバレッジの閾値をチェックします。 実際の閾値は、lines、functions、branches、および statements で設定します。
coverage.thresholdAutoUpdate
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.thresholdAutoUpdate=<boolean>
現在のカバレッジが設定された閾値を上回っている場合、設定ファイル内の lines、functions、branches、および statements の閾値を自動的に更新します。 このオプションは、カバレッジが改善された場合に閾値を維持するのに役立ちます。
coverage.lines
- Type:
number - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.lines=<number>
行の閾値。 詳細については、istanbul documentation を参照してください。
coverage.functions
- Type:
number - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.functions=<number>
関数の閾値。 詳細については、istanbul documentation を参照してください。
coverage.branches
- Type:
number - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.branches=<number>
ブランチの閾値。 詳細については、istanbul documentation を参照してください。
coverage.statements
- Type:
number - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.statements=<number>
ステートメントの閾値。 詳細については、istanbul documentation を参照してください。
coverage.100
- Type:
boolean - Default:
false - Available for providers:
'v8' | 'istanbul' - CLI:
--coverage.100,--coverage.100=false
--coverage.lines 100 --coverage.functions 100 --coverage.branches 100 --coverage.statements 100 のショートカット。すべてのカバレッジ閾値を 100% に設定します。
coverage.ignoreClassMethods
- Type:
string[] - Default:
[] - Available for providers:
'istanbul' - CLI:
--coverage.ignoreClassMethods=<method>
カバレッジから無視するクラスメソッド名の配列を設定します。 詳細については、istanbul documentation を参照してください。
coverage.watermarks
- Type:
{
statements?: [number, number],
functions?: [number, number],
branches?: [number, number],
lines?: [number, number]
}- Default:
{
statements: [50, 80],
functions: [50, 80],
branches: [50, 80],
lines: [50, 80]
}- Available for providers:
'v8' | 'istanbul'
ステートメント、行、ブランチ、および関数のウォーターマーク。詳細については、istanbul documentation を参照してください。
coverage.customProviderModule
- Type:
string - Available for providers:
'custom' - CLI:
--coverage.customProviderModule=<path or module name>
カスタムカバレッジプロバイダーモジュールのモジュール名またはパスを指定します。詳細については、ガイド - カスタムカバレッジプロバイダー を参照してください。
testNamePattern*
- Type
string | RegExp - CLI:
-t <pattern>,--testNamePattern=<pattern>,--test-name-pattern=<pattern>
指定されたパターンに一致する名前を持つテストのみを実行します。 このプロパティに OnlyRunThis を設定した場合、テスト名に OnlyRunThis という単語が含まれていないテストはスキップされます。
import { expect, test } from 'vitest';
// 実行
test('OnlyRunThis', () => {
expect(true).toBe(true);
});
// スキップ
test('doNotRun', () => {
expect(true).toBe(true);
});open*
- Type:
boolean - Default:
false - CLI:
--open,--open=false
Vitest UI (開発中) を開きます。
api
- Type:
boolean | number - Default:
false - CLI:
--api,--api.port,--api.host,--api.strictPort
指定されたポートで API をリッスンします。true に設定した場合、デフォルトのポートは 51204 です。
browser
- Type:
{ enabled?, name?, provider?, headless?, api?, slowHijackESM? } - Default:
{ enabled: false, headless: process.env.CI, api: 63315 } - Version: Vitest 0.29.4 以降
- CLI:
--browser,--browser=<name>,--browser.name=chrome --browser.headless
ブラウザ上で Vitest テストを実行します。デフォルトでは、テストの実行に WebdriverIO を使用しますが、browser.provider オプションで構成できます。
NOTE
実際のブラウザでのテストの詳細については、ガイドページ を参照してください。
WARNING
これは実験的な機能です。破壊的な変更はセマンティックバージョニングに従わない可能性があるため、使用する場合は Vitest のバージョンを固定してください。
browser.enabled
- Type:
boolean - Default:
false - CLI:
--browser,--browser.enabled=false
デフォルトですべてのテストをブラウザ内で実行します。poolMatchGlobs オプションで上書きできます。
browser.name
- Type:
string - CLI:
--browser=safari
特定のブラウザですべてのテストを実行します。プロバイダーごとに指定可能なオプション:
webdriverio:firefox,chrome,edge,safariplaywright:firefox,webkit,chromium- custom: プロバイダーに渡される任意の文字列
browser.headless
- Type:
boolean - Default:
process.env.CI - CLI:
--browser.headless,--brower.headless=false
ブラウザをヘッドレスモードで実行します。CI 環境下で Vitest を実行している場合、デフォルトで有効になります。
browser.api
- Type:
number | { port?, strictPort?, host? } - Default:
63315 - CLI:
--browser.api=63315,--browser.api.port=1234, --browser.api.host=example.com
ブラウザ上でコードを提供する Vite サーバーのオプションを設定します。test.api オプションには影響しません。
browser.provider
- Type:
'webdriverio' | 'playwright' | string - Default:
'webdriverio' - CLI:
--browser.provider=playwright
ブラウザテストの実行に使用されるプロバイダーへのパス。Vitest は、webdriverio (デフォルト) と playwright の 2 つのプロバイダーを提供します。カスタムプロバイダーは、default export を用いてエクスポートする必要があり、以下のインターフェースを満たす必要があります。
export interface BrowserProvider {
name: string;
getSupportedBrowsers(): readonly string[];
initialize(ctx: Vitest, options: { browser: string }): Awaitable<void>;
openPage(url: string): Awaitable<void>;
close(): Awaitable<void>;
}WARNING
これはライブラリ開発者向けの高度な API です。ブラウザでテストを実行する必要がある場合は、browser オプションを使用してください。
browser.slowHijackESM
- Type:
boolean - Default:
true - Version: Vitest 0.31.0 以降で利用可能
Node.js でテストを実行する場合、Vitest は独自のモジュール解決を使用して、vi.mock 構文によるモジュールのモックを容易にします。しかし、ブラウザ環境で ES Modules の解決を再現することは容易ではないため、ブラウザで利用できるようにソースファイルを変換する必要があります。
このオプションは、Node.js 環境で実行されるテストには影響しません。
ブラウザで実行する場合はデフォルトで有効です。vi.spyOn で ES モジュールをスパイすることに依存せず、vi.mock を使用しない場合は、無効にすることでパフォーマンスをわずかに向上させることができます。
clearMocks
- Type:
boolean - Default:
false
各テストの実行前に、すべてのスパイオブジェクトに対して .mockClear() を実行します。これにより、モックの履歴はクリアされますが、実装はデフォルトの状態にはリセットされません。
mockReset
- Type:
boolean - Default:
false
各テストの実行前に、すべてのスパイオブジェクトに対して .mockReset() を実行します。これにより、モックの履歴がクリアされ、実装は空の関数にリセットされます(undefined を返します)。
restoreMocks
- Type:
boolean - Default:
false
各テストの実行前に、すべてのスパイオブジェクトに対して .mockRestore() を実行します。これにより、モックの履歴がクリアされ、実装は元の状態にリセットされます。
unstubEnvs
- Type:
boolean - Default:
false - Version: Vitest 0.26.0 以降
各テストの前に vi.unstubAllEnvs を呼び出します。
unstubGlobals
- Type:
boolean - Default:
false - Version: Vitest 0.26.0 以降
各テストの前に vi.unstubAllGlobals を呼び出します。
testTransformMode
- Type:
{ web?, ssr? } - Version: Vitest 0.34.0 以降
グロブパターンに一致するテスト内でインポートされるすべてのモジュールの変換方法を決定します。デフォルトでは、環境に依存します。たとえば、JSDOM 環境のテストでは、すべてのファイルが ssr: false フラグで処理され、Node 環境のテストでは、すべてのモジュールが ssr: true で処理されます。
testTransformMode.ssr
- Type:
string[] - Default:
[]
指定されたテストに含まれるすべてのモジュールに対して、SSR 変換パイプラインを適用します。 Vite プラグインは、これらのファイルを処理する際に ssr: true フラグを受け取ります。
testTransformMode.web
- Type:
string[] - Default:
[]
最初に通常の変換パイプライン(ブラウザターゲット)を実行し、その後 SSR リライトを行い Node.js 環境で実行します。 Vite プラグインは、これらのファイルを処理する際に ssr: false フラグを受け取ります。
snapshotFormat*
- Type:
PrettyFormatOptions
スナップショットテストのフォーマットオプション。これらのオプションは、pretty-format に渡されます。
resolveSnapshotPath*
- Type:
(testPath: string, snapExtension: string) => string - Default: スナップショットファイルを
__snapshots__ディレクトリに保存します
デフォルトのスナップショットパスをオーバーライドします。たとえば、スナップショットをテストファイルの隣に保存するには:
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
resolveSnapshotPath: (testPath, snapExtension) => testPath + snapExtension,
},
});allowOnly
- Type:
boolean - Default:
false - CLI:
--allowOnly,--allowOnly=false
.only が付与されたテストおよびスイートの実行を許可します。
dangerouslyIgnoreUnhandledErrors*
- Type:
boolean - Default:
false - CLI:
--dangerouslyIgnoreUnhandledErrors--dangerouslyIgnoreUnhandledErrors=false
発生したすべての未処理エラーを無視します。
passWithNoTests*
- Type:
boolean - Default:
false - CLI:
--passWithNoTests,--passWithNoTests=false
テストが 1 つも見つからなかった場合でも、Vitest はエラーを返しません。
logHeapUsage
- Type:
boolean - Default:
false - CLI:
--logHeapUsage,--logHeapUsage=false
各テストの後にヒープ使用量を表示します。メモリリークのデバッグに役立ちます。
css
- Type:
boolean | { include?, exclude?, modules? }
CSS を処理するかどうかを設定します。除外すると、CSS ファイルは後続の処理をバイパスするために空の文字列に置き換えられます。CSS Modules は、ランタイムに影響を与えないようにプロキシオブジェクトを返します。
css.include
- Type:
RegExp | RegExp[] - Default:
[]
実際の CSS を返し、Vite のパイプラインで処理されるべきファイルの正規表現パターン。
TIP
すべての CSS ファイルを処理するには、/.+/ を使用します。
css.exclude
- Type:
RegExp | RegExp[] - Default:
[]
空の CSS ファイルを返すファイルの RegExp パターン。
css.modules
- Type:
{ classNameStrategy? } - Default:
{}
css.modules.classNameStrategy
- Type:
'stable' | 'scoped' | 'non-scoped' - Default:
'stable'
CSS ファイルを処理する場合、CSS モジュール内のクラス名をスコープするかどうかを設定できます。次のいずれかのオプションを選択できます。
stable: クラス名は_${name}_${hashedFilename}として生成されます。これは、CSS コンテンツが変更された場合でも生成されたクラスは同じままであり、ファイルの名前が変更された場合、またはファイルが別のフォルダーに移動された場合に変わることを意味します。この設定は、スナップショット機能を使用する場合に役立ちます。scoped: クラス名は通常どおり生成され、CSS 処理が有効になっている場合はcss.modules.generateScopeNameメソッドが尊重されます。デフォルトでは、ファイル名は_${name}_${hash}として生成されます。ここで、ハッシュにはファイル名とファイルの内容が含まれます。non-scoped: クラス名はハッシュされません。
WARNING
デフォルトでは、Vitest はプロキシをエクスポートし、CSS Modules の処理をバイパスします。クラスの CSS プロパティに依存する場合は、include オプションを使用して CSS 処理を有効にする必要があります。
maxConcurrency
- Type:
number - Default:
5
test.concurrent でマークされた、同時に実行できるテストの数。
この制限を超えたテストは、実行可能なスロットが空き次第、キューから実行されます。
cache*
- Type:
false | { dir? }
Vitest のキャッシュポリシーを設定するオプション。現在、Vitest はテスト結果をキャッシュに保存し、実行時間が長く、失敗したテストから優先的に実行します。
cache.dir
- Type:
string - Default:
node_modules/.vitest
キャッシュディレクトリへのパス。
sequence
- Type:
{ sequencer?, shuffle?, seed?, hooks?, setupFiles? }
テストのソート方法に関するオプション。
ドット表記でシーケンスオプションを CLI に指定できます。
npx vitest --sequence.shuffle --sequence.seed=1000sequence.sequencer*
- Type:
TestSequencerConstructor - Default:
BaseSequencer
シャーディングとソートのメソッドを定義するカスタムクラス。sort メソッドと shard メソッドのいずれか 1 つだけを再定義する必要がある場合は、vitest/node から BaseSequencer を拡張できますが、両方が存在する必要があります。
シャーディングはソートの前に実行され、--shard オプションが指定されている場合にのみ実行されます。
sequence.shuffle
- Type:
boolean - Default:
false - CLI:
--sequence.shuffle,--sequence.shuffle=false
テストをランダムに実行する場合は、このオプションまたは CLI 引数 --sequence.shuffle で有効にできます。
Vitest は通常、キャッシュを利用してテストをソートし、実行時間の長いテストを優先的に実行します。これにより、テストの実行が高速になります。テストをランダムな順序で実行すると、このパフォーマンスの向上は失われますが、前の実行に誤って依存しているテストを追跡するのに役立つ場合があります。
sequence.concurrent
- Type:
boolean - Default:
false - CLI:
--sequence.concurrent,--sequence.concurrent=false - Version: Vitest 0.32.2 以降
テストを並行実行する場合は、このオプションまたは CLI 引数 --sequence.concurrent で有効化できます。
sequence.seed*
- Type:
number - Default:
Date.now() - CLI:
--sequence.seed=1000
テストをランダムな順序で実行する場合、ランダム化シードを設定します。
sequence.hooks
- Type:
'stack' | 'list' | 'parallel' - Default:
'parallel' - CLI:
--sequence.hooks=<value>
フックが実行される順序を変更します。
stackは、「after」フックを逆の順序で並べ、「before」フックは定義された順序で実行します。listは、すべてのフックを定義した順序で並べます。parallelは、単一のグループでフックを並行して実行します(親スイートのフックは、現在のスイートのフックの前に実行されます)。
sequence.setupFiles
- Type:
'list' | 'parallel' - Default:
'parallel' - CLI:
--sequence.setupFiles=<value> - Version: Vitest 0.29.3 以降
セットアップファイルが実行される順序を変更します。
listは、セットアップファイルを定義した順序で実行します。parallelは、セットアップファイルを並行して実行します。
typecheck
型チェック テスト環境を設定するためのオプション。
typecheck.checker
- Type:
'tsc' | 'vue-tsc' | string - Default:
tsc
型チェックに使用するツール。Vitest は、型チェックツールに応じて、解析を容易にするための特定のパラメータを設定してプロセスを生成します。チェッカーは、tsc と同じ出力形式を実装する必要があります。
typechecker を使用するには、パッケージをインストールする必要があります。
tscにはtypescriptパッケージが必要です。vue-tscにはvue-tscパッケージが必要です。
tsc --noEmit --pretty false と同じ出力を生成するカスタムバイナリまたはコマンド名へのパスを渡すこともできます。
typecheck.include
- Type:
string[] - Default:
['**/*.{test,spec}-d.?(c|m)[jt]s?(x)']
テストファイルとして扱うファイルのグロブパターン。
typecheck.exclude
- Type:
string[] - Default:
['**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**']
テストファイルとして扱わないファイルのグロブパターン。
typecheck.allowJs
- Type:
boolean - Default:
false
@ts-check コメントがある JS ファイルを確認します。tsconfig で有効になっている場合、これは上書きされません。
typecheck.ignoreSourceErrors
- Type:
boolean - Default:
false
Vitest がテストファイル外でエラーを検出した場合でも、テストは失敗しません。これにより、テストに関係のないエラーは表示されなくなります。
デフォルトでは、Vitest がソースエラーを見つけた場合、テストスイートは失敗します。
typecheck.tsconfig
- Type:
string - Default: 最も近い tsconfig.json を検索しようとします
プロジェクトルートからのカスタム tsconfig へのパス。
slowTestThreshold*
- Type:
number - Default:
300
テストが遅いと見なされ、結果にそのように報告されるまでのミリ秒数。
chaiConfig
- Type:
{ includeStack?, showDiff?, truncateThreshold? } - Default:
{ includeStack: false, showDiff: true, truncateThreshold: 40 } - Version: Vitest 0.30.0 以降
Chai config と同等。
chaiConfig.includeStack
- Type:
boolean - Default:
false
スタックトレースをアサーションエラーメッセージに含めるかどうかを制御します。デフォルトの false は、エラーメッセージのスタックトレースを抑制します。
chaiConfig.showDiff
- Type:
boolean - Default:
true
showDiff フラグをスローされた AssertionErrors に含めるかどうかを制御します。false を指定すると常に差分は表示されません。true を指定すると、アサーションで差分表示が要求された場合に表示されます。
chaiConfig.truncateThreshold
- Type:
number - Default:
40
アサーションエラーの実際の値と期待される値の長さのしきい値を設定します。このしきい値を超えた場合、たとえば大きなデータ構造の場合、値は [ Array(3) ] や { Object (prop1, prop2) } のようなものに置き換えられます。完全に切り捨てを無効にする場合は、0 に設定します。
この構成オプションは、test.each タイトル内およびアサーションエラーメッセージ内の値の切り捨てに影響します。
bail
- Type:
number - Default:
0 - CLI:
--bail=<value> - Version: Vitest 0.31.0 以降
指定された数のテストが失敗した場合に、テストの実行を停止します。
デフォルトでは、Vitest は、一部のテストが失敗した場合でも、すべてのテストケースを実行します。これは、100% 成功するビルドのみを重視し、テスト失敗時に可能な限り早くテスト実行を停止したい CI 環境では有効です。bail オプションを使用すると、失敗が発生した場合にそれ以上のテストの実行を防ぐことで、CI の実行を高速化できます。
retry
- Type:
number - Default:
0 - CLI:
--retry=<value> - Version: Vitest 0.32.3 以降
テストが失敗した場合に、指定された回数だけテストを再試行します。
onConsoleLog
- Type:
(log: string, type: 'stdout' | 'stderr') => false | void
テストでの console.log のカスタムハンドラー。false を返すと、Vitest はログをコンソールに出力しません。
サードパーティライブラリからの不要なログ出力を抑制するのに役立ちます。
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void {
if (log === 'message from third party library' && type === 'stdout')
return false;
},
},
});diff
- Type:
string - CLI:
--diff=<value> - Version: Vitest 0.34.5 以降
差分表示インターフェースの生成に使用する差分設定ファイルへのパス。差分表示をカスタマイズしたい場合に有用です。
import type { DiffOptions } from 'vitest';
import c from 'picocolors';
export default {
aIndicator: c.bold('--'),
bIndicator: c.bold('++'),
omitAnnotationLines: true,
} satisfies DiffOptions;import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
diff: './vitest.diff.ts',
},
});