管理 Vitest 配置文件
如果你正在使用 Vite 并且有一个 vite.config
文件,Vitest 会读取该文件以匹配 Vite 应用的插件和配置。如果你的测试需要不同的配置,或者你的主应用不依赖 Vite,你可以选择以下方式:
- 创建
vitest.config.ts
文件。该文件具有更高的优先级,会覆盖vite.config.ts
中的配置(Vitest 支持所有常见的 JS 和 TS 扩展名,但不支持json
)。这意味着vite.config.ts
中的所有选项都将被忽略。 - 通过 CLI 传递
--config
选项,例如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/*'],
},
})
))