跳至内容

管理 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.VITESTdefineConfig 上的 mode 属性(如果未被 --mode 覆盖,将设置为 test/benchmark)来有条件地在 vite.config.ts 中应用不同的配置

要配置 vitest 本身,请在您的 Vite 配置中添加 test 属性。如果您从 vite 本身导入 defineConfig,您还需要在配置文件顶部使用 三斜杠指令 添加对 Vitest 类型的引用。

使用来自 vitedefineConfig,您应该遵循以下步骤

ts
/// <reference types="vitest" />
import {  } from 'vite'

export default ({
  : {
    // ... Specify options here.
  },
})

使用来自 vitest/configdefineConfig,您应该遵循以下步骤

ts
import {  } from 'vitest/config'

export default ({
  : {
    // ... Specify options here.
  },
})

您可以检索 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/*'],
    },
  })
))