Vitestの設定ファイル管理
Viteを使用しており、vite.configファイルが存在する場合、Vitestはそれを読み込み、Viteアプリと同じプラグインと設定を適用します。テスト用に別の設定が必要な場合や、メインアプリがViteに依存しない場合は、以下のいずれかの方法を検討してください。
vitest.config.tsを作成します。これは優先度が高く、vite.config.tsの設定を上書きします(Vitestは従来のJSおよびTSの拡張子をすべてサポートしますが、jsonはサポートしません)。つまり、vite.config内のオプションはすべて無視されます。--configオプションをCLIに渡します。例:vitest --config ./path/to/vitest.config.tsprocess.env.VITESTまたはdefineConfigのmodeプロパティ(--modeで指定されない場合はtest/benchmarkが設定されます)を利用して、vite.config.ts内で条件に応じて設定を切り替えることができます。
vitest自体の設定を行うには、Vite設定にtestプロパティを追加します。viteからdefineConfigをインポートする場合は、設定ファイルの先頭にトリプルスラッシュディレクティブを用いてVitestの型定義を参照する必要があります。
viteのdefineConfigを使用する場合は、次のようになります。
ts
/// <reference types="vitest" />
import { defineConfig } from 'vite';
export default defineConfig({
test: {
// ... ここにオプションを指定します。
},
});vitest/configのdefineConfigを使用する場合は、次のようになります。
ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
// ... ここにオプションを指定します。
},
});必要に応じて、Vitestのデフォルト設定を読み込んで拡張できます。
ts
import { configDefaults, defineConfig } from 'vitest/config';
export default defineConfig({
test: {
exclude: [...configDefaults.exclude, 'packages/template/*'],
},
});別途vitest.config.jsを使用している場合、必要に応じて別の設定ファイルからViteの設定を拡張できます。
ts
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';
export default mergeConfig(
viteConfig,
defineConfig({
test: {
exclude: ['packages/template/*'],
},
})
);Viteの設定が関数として定義されている場合は、以下のように設定を記述できます。
ts
import { defineConfig, mergeConfig } from 'vitest/config';
import viteConfig from './vite.config';
export default defineConfig(configEnv =>
mergeConfig(
viteConfig(configEnv),
defineConfig({
test: {
exclude: ['packages/template/*'],
},
})
)
);