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.ts
process.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/*'],
},
})
)
);