进阶 vitest.dev 2026-10-22 19:00:41 · 20 阅读

第13章 Vitest 命令行界面(CLI)详解

第13章 命令行界面

命令

vitest

在当前目录启动 Vitest。在开发环境中会自动进入 watch 模式,在 CI(或非交互终端)中会自动进入运行模式。你可以传入一个额外参数作为测试文件的过滤器。例如:

```bash vitest foobar ```

这将仅运行路径中包含 `foobar` 的测试文件。该过滤器仅检查是否包含,不支持正则表达式或通配符模式(除非你的终端在 Vitest 接收过滤器之前已对其进行了处理)。

从 Vitest 3 开始,你还可以通过文件名和行号指定测试:

```bash $ vitest basic/foo.test.ts:10 ```

注意:Vitest 要求提供完整的文件名才能使用此功能。路径可以是相对于当前工作目录的,也可以是绝对路径。

```bash $ vitest basic/foo.js:10 # ✅ $ vitest ./basic/foo.js:10 # ✅ $ vitest /users/project/basic/foo.js:10 # ✅ $ vitest foo:10 # ❌ $ vitest ./basic/foo:10 # ❌ ```

目前 Vitest 也不支持范围指定:

```bash $ vitest basic/foo.test.ts:10, basic/foo.test.ts:25 # ✅ $ vitest basic/foo.test.ts:10-25 # ❌ ```

vitest run

执行单次运行,不启用 watch 模式。

vitest watch

运行所有测试套件,但监控文件变更并在变更时重新运行测试。等同于不带参数调用 `vitest`。在 CI 或标准输入不是 TTY(非交互环境)时,会回退到 `vitest run`。

vitest dev

`vitest watch` 的别名。

vitest related

仅运行覆盖指定源文件列表的测试。支持静态导入(例如 `import('./index.js')` 或 `import index from './index.js'`),但不支持动态导入(例如 `import(filepath)`)。所有文件路径都应相对于根目录。

与 `lint-staged` 或 CI 设置配合使用非常有用。

```bash vitest related /src/index.ts /src/hello-world.js ```

提示:不要忘记 Vitest 默认启用 watch 模式。如果你正在使用像 `lint-staged` 这样的工具,也应该传递 `--run` 选项,以便命令能正常退出。

`.lintstagedrc.js`:

```js export default { '*.{js,ts}': 'vitest related --run', } ```

vitest bench

仅运行基准测试,这些测试用于比较性能结果。

vitest init

`vitest init ` 可用于设置项目配置。目前它仅支持 `browser` 值:

```bash vitest init browser ```

vitest list

`vitest list` 命令继承所有 Vitest 选项以打印所有匹配的测试列表。此命令会忽略 `reporters` 选项。默认情况下,它会打印所有匹配文件过滤器和名称模式的测试名称:

```shell vitest list filename.spec.ts -t="some-test" ```

输出示例:

```txt describe > some-test describe > some-test > test 1 describe > some-test > test 2 ```

你可以传递 `--json` 标志以 JSON 格式打印测试或将其保存到单独的文件中:

```bash vitest list filename.spec.ts -t="some-test" --json=./file.json ```

如果 `--json` 标志未接收值,它会将 JSON 输出到标准输出。

你还可以传递 `--filesOnly` 标志以仅打印测试文件:

```bash vitest list --filesOnly ```

输出示例:

```txt tests/test1.test.ts tests/test2.test.ts ```

从 Vitest 5 开始,`vitest list` 通过静态解析测试文件而不是运行它们来收集测试。传递 `--no-static-parse` 可以改为运行文件。Vitest 以有限的并发度解析测试文件,默认值为 `os.availableParallelism()`。你可以通过 `--static-parse-concurrency` 选项更改此值。

vitest doctor

`vitest doctor` 通过在不同的替代配置下运行测试套件来衡量其速度提升幅度。候选配置基于当前配置进行选择:

```bash vitest doctor ```

结果(每次最少运行 3 次):

``` baseline (pool: forks · isolate: true) 4.08s pool: 'threads' 3.64s (-11%) pool: 'vmThreads' 1.33s (-67%) isolate: false 1.28s (-69%)

Recommendation: pool: 'vmThreads' (-67%)

// vitest.config.ts import { defineConfig } from 'vitest/config'

export default defineConfig({ test: { pool: 'vmThreads', // measured -67% on this suite }, }) ```

`isolate: false` 候选配置会额外通过两次随机打乱文件顺序的运行进行验证:如果任何测试依赖于隔离性,该候选配置将被报告为失败而不是推荐。当几个候选配置的速度与最快者接近时,`doctor` 优先选择保持每个文件隔离的配置。

`Doctor` 还会在获胜配置的基础上探测较低的 `maxWorkers` 值:由于每个 worker 都将转换请求通过单个主线程 Vite 服务器转发,因此超过一定数量后,更多的 worker 会使运行变慢而不是变快。从当前 worker 数量的一半开始,`doctor` 会不断减半,只要套件至少快 5%,并将获胜值包含在建议中。

运行 DOM 或自定义环境的套件会在两个 `vm` 池下测量:`vmThreads` 和 `vmForks`:它们通过在每个 worker 中保持一个环境来摊销环境创建成本,同时每个文件仍然获得一个新的 VM 上下文。`vmForks` 使用子进程而不是 worker 线程:每个子进程拥有自己的堆和垃圾回收器,因此根据套件的不同,任何池都可能更快,而 `vmForks` 是那些无法在 worker 线程中运行的套件的 `vm` 选项。

运行 `jsdom` 的项目还会在安装了该包的情况下测量 `environment: 'happy-dom'`。此替换按项目应用;使用其他环境的项目保留其原有环境。`happy-dom` 的 DOM 实现与 `jsdom` 不同,因此依赖于布局或导航的测试在采用此替换前应进行验证。当 `fs` 模块缓存关闭时,`doctor` 会在一次非计时的预热运行(用于填充缓存)之后测量 `fsModuleCache: true`,因此报告的时间是重复运行所付出的代价。

每个测量都运行完整的套件,包括浏览器项目:`isolate: false` 也会影响浏览器模式。那些无法影响浏览器项目的候选配置(`pool`、`environment`、`fs` 模块缓存)仅基于 Node 端项目选择。

失败的候选配置会报告其错误的摘录。如果套件在当前配置下失败,`doctor` 会中止并显示错误:它需要一个通过的基线来进行比较。

较短的套件会被测量多次并报告最佳时间,因此比较反映的是热稳态。`Doctor` 运行完整套件几次,因此花费的时间是正常运行时间的倍数。有关每个候选配置背后的权衡,请参阅“性能优化”。

即使没有候选配置进行比较,`Doctor` 也会测量并报告基线。`vm` 池上的配置还会与 `isolate: false` 的 `pool: 'threads'` 进行比较,后者也重用 worker,但共享文件间的模块状态;已经处于一个 `vm` 池上的配置仍会在另一个 `vm` 池下测量。

Shell 自动补全

Vitest 提供由 `@bomb.sh/tab` 支持的对命令、选项和选项值的 shell 自动补全。

设置

若要永久在 zsh 中设置,将此添加到你的 `~/.zshrc`:

```bash # Add to ~/.zshrc for permanent autocompletions (same can be done for other shells) source <(vitest complete zsh) ```

包管理器集成

`@bomb.sh/tab` 与包管理器集成。直接运行 `vitest` 时自动补全有效:

```npm npm vitest ``` ```npm npm exec vitest ``` ```pnpm pnpm vitest ``` ```yarn yarn vitest ``` ```bun bun vitest ```

对于包管理器的自动补全,你应单独安装 `tab` 的包管理器补全。

选项

提示:Vitest 支持 CLI 参数的驼峰命名和短横线命名。例如,`--passWithNoTests` 和 `--pass-with-no-tests` 都有效(`--no-color` 和 `--inspect-brk` 是例外)。

Vitest 还支持不同的值指定方式:`--reporter dot` 和 `--reporter=dot` 都是有效的。

如果选项支持值数组,你需要多次传递该选项:

`vitest --reporter=dot --reporter=default`

布尔选项可以用 `no-` 前缀取反。将值指定为 `false` 也有效:

`vitest --no-api` `vitest --api=false`

root

CLI: `-r`, `--root ` Config: `root` 根路径

config

CLI: `-c`, `--config ` 路径到配置文件

update

CLI: `-u`, `--update [type]` Config: `update` 更新快照(接受布尔值、"new"、"all" 或 "none")

watch

CLI: `-w`, `--watch` Config: `watch` 启用 watch 模式

testNamePattern

CLI: `-t`, `--testNamePattern ` Config: `testNamePattern` 运行完整名称匹配指定正则模式的测试

dir

CLI: `--dir ` Config: `dir` 扫描测试文件的基础目录

ui

CLI: `--ui` 启用 UI

open

Config: `open` 自动打开 UI(默认:`!process.env.CI`)

api.port

CLI: `--api.port [port]` 指定服务器端口。注意如果端口已被占用,Vite 会自动尝试下一个可用端口,因此这可能不是服务器最终监听的实际端口。如果设置为 `true`,将为 51204

api.host

CLI: `--api.host [host]` 指定服务器应监听的 IP 地址。将此设置为 `0.0.0.0` 或 `true` 以监听所有地址,包括 LAN 和公共地址

api.strictPort

CLI: `--api.strictPort` 设置为 `true` 以在端口已被占用时退出,而不是自动尝试下一个可用端口

api.allowExec

CLI: `--api.allowExec` Config: `api.allowExec` 允许 API 执行代码。(在不可信环境中启用此选项时请小心)

api.allowWrite

CLI: `--api.allowWrite` Config: `api.allowWrite` 允许 API 编辑文件。(在不可信环境中启用此选项时请小心)

silent

CLI: `--silent [value]` Config: `silent` 静默来自测试的控制台输出。使用 `'passed-only'` 仅查看失败测试的日志。

hideSkippedTests

CLI: `--hideSkippedTests` 隐藏跳过测试的日志

reporters

CLI: `--reporter ` Config: `reporters` 指定报告器(default, agent, minimal, blob, verbose, dot, json, tap, tap-flat, junit, tree, hanging-process, github-actions)

outputFile

CLI: `--outputFile ` Config: `outputFile` 当支持报告器也被指定时,将测试结果写入文件,使用 cac 的点表示法为多个报告器的独立输出(示例:`--outputFile.tap=./tap.txt`)

coverage.provider

CLI: `--coverage.provider ` Config: `coverage.provider` 选择覆盖率收集工具,可用值包括:"v8"、"istanbul" 和 "custom"

coverage.enabled

CLI: `--coverage.enabled` Config: `coverage.enabled` 启用覆盖率收集。可以使用 `--coverage` CLI 选项覆盖(默认:`false`)

coverage.include

CLI: `--coverage.include ` Config: `coverage.include` 作为通配符模式包含在覆盖率中的文件。使用多个模式时可以多次指定。默认情况下,仅包含被测试覆盖的文件。

coverage.exclude

CLI: `--coverage.exclude ` Config: `coverage.exclude` 排除在覆盖率之外的文件。使用多个扩展名时可以多次指定。

coverage.clean

CLI: `--coverage.clean` Config: `coverage.clean` 在运行测试前清除覆盖率结果(默认:`true`)

coverage.cleanOnRerun

CLI: `--coverage.cleanOnRerun` Config: `coverage.cleanOnRerun` 在 watch 重新运行时清除覆盖率报告(默认:`true`)

coverage.reportsDirectory

CLI: `--coverage.reportsDirectory ` Config: `coverage.reportsDirectory` 写入覆盖率报告的目录(默认:`./coverage`)

coverage.reporter

CLI: `--coverage.reporter ` Config: `coverage.reporter` 要使用的覆盖率报告器。访问 `coverage.reporter` 以获取更多信息(默认:`["text", "html", "clover", "json"]`)

coverage.reportOnFailure

CLI: `--coverage.reportOnFailure` Config: `coverage.reportOnFailure` 即使测试失败也生成覆盖率报告(默认:`false`)

coverage.allowExternal

CLI: `--coverage.allowExternal` Config: `coverage.allowExternal` 收集项目根目录外文件的覆盖率(默认:`false`)

coverage.skipFull

CLI: `--coverage.skipFull` Config: `coverage.skipFull` 不显示 100% 语句、分支和函数覆盖的文件(默认:`false`)

coverage.thresholds.100

CLI: `--coverage.thresholds.100` Config: `coverage.thresholds.100` 将所有覆盖率阈值设置为 100 的快捷方式(默认:`false`)

coverage.thresholds.perFile

CLI: `--coverage.thresholds.perFile ` Config: `coverage.thresholds.perFile` 按文件检查阈值。参见 `--coverage.thresholds.lines`、`--coverage.thresholds.functions`、`--coverage.thresholds.branches` 和 `--coverage.thresholds.statements` 以获取实际阈值(默认:`false`)。对象形式仅在配置文件中可用。

coverage.thresholds.autoUpdate

CLI: `--coverage.thresholds.autoUpdate ` Config: `coverage.thresholds.autoUpdate` 当当前覆盖率高于配置阈值时,更新配置文件中的阈值值:"lines"、"functions"、"branches" 和 "statements"(默认:`false`)

coverage.thresholds.lines

CLI: `--coverage.thresholds.lines ` 语句阈值。访问 istanbuljs 以获取更多信息。此选项不适用于自定义提供程序

coverage.thresholds.functions

CLI: `--coverage.thresholds.functions ` 函数阈值。访问 istanbuljs 以获取更多信息。此选项不适用于自定义提供程序

coverage.thresholds.branches

CLI: `--coverage.thresholds.branches ` 分支阈值。访问 istanbuljs 以获取更多信息。此选项不适用于自定义提供程序

coverage.thresholds.statements

CLI: `--coverage.thresholds.statements ` 语句阈值。访问 istanbuljs 以获取更多信息。此选项不适用于自定义提供程序

coverage.ignoreClassMethods

CLI: `--coverage.ignoreClassMethods ` Config: `coverage.ignoreClassMethods` 忽略覆盖率中的类方法名数组。访问 istanbuljs 以获取更多信息。此选项仅适用于 istanbul 提供程序(默认:`[]`)

coverage.processingConcurrency

CLI: `--coverage.processingConcurrency ` Config: `coverage.processingConcurrency` 处理覆盖率结果时使用的并发限制。(默认在 20 和 CPU 数量之间取最小值)

coverage.customProviderModule

CLI: `--coverage.customProviderModule ` Config: `coverage.customProviderModule` 指定自定义覆盖率提供程序模块的模块名或路径。访问“自定义覆盖率提供程序”以获取更多信息。此选项仅适用于自定义提供程序

coverage.watermarks.statements

CLI: `--coverage.watermarks.statements ` 语句的高和低水位线,格式为 `,`

coverage.watermarks.lines

CLI: `--coverage.watermarks.lines ` 行的高和低水位线,格式为 `,`

coverage.watermarks.branches

CLI: `--coverage.watermarks.branches ` 分支的高和低水位线,格式为 `,`

coverage.watermarks.functions

CLI: `--coverage.watermarks.functions ` 函数的高和低水位线,格式为 `,`

coverage.changed

CLI: `--coverage.changed ` Config: `coverage.changed` 仅收集自指定 commit 或分支以来变更的文件的覆盖率(例如,`origin/main` 或 `HEAD~1`)。默认继承自 `--changed`。

coverage.excludeAfterRemap

CLI: `--coverage.excludeAfterRemap` Config: `coverage.excludeAfterRemap` 在覆盖率映射回原始源后再次应用排除。(默认:`false`)

coverage.htmlDir

CLI: `--coverage.htmlDir ` Config: `coverage.htmlDir` HTML 覆盖率输出目录,用于在 UI 模式和 HTML 报告器中提供服务。

coverage.autoAttachSubprocess

CLI: `--coverage.autoAttachSubprocess` Config: `coverage.autoAttachSubprocess` 跟踪测试运行期间生成的 `node:child_process` 和 `node:worker_threads` 的覆盖率。仅由 v8 提供程序支持。(默认:`false`)

mode

CLI: `--mode ` Config: `mode` 覆盖 Vite 模式(默认:`test`)

isolate

CLI: `--isolate` Config: `isolate` 隔离运行每个测试文件。要禁用隔离,请使用 `--no-isolate`(默认:`true`)

globals

CLI: `--globals` Config: `globals` 全局注入 API

injectCjsGlobals

CLI: `--injectCjsGlobals` Config: `injectCjsGlobals` 将 CommonJS 变量(`module`, `exports`, `require`, `__filename`, `__dirname`)注入到每个测试模块中。要禁用,请使用 `--no-inject-cjs-globals`(默认:`true`)

dom

CLI: `--dom` 使用 happy-dom 模拟浏览器 API

browser.enabled

CLI: `--browser.enabled` Config: `browser.enabled` 在浏览器中运行测试。等同于 `--browser.enabled`(默认:`false`)

browser.name

CLI: `--browser.name ` 在特定浏览器中运行所有测试。某些浏览器仅对特定提供程序可用(参见 `--browser.provider`)。

browser.headless

CLI: `--browser.headless` Config: `browser.headless` 以无头模式运行浏览器(即不打开 GUI(图形用户界面))。如果你在 CI 中运行 Vitest,它将默认启用(默认:`process.env.CI`)

browser.ui

CLI: `--browser.ui` Config: `browser.ui` 运行测试时显示 Vitest UI(默认:`!process.env.CI`)

browser.detailsPanelPosition

CLI: `--browser.detailsPanelPosition ` Config: `browser.detailsPanelPosition` 浏览器模式下详情面板的默认位置。要么是 right(水平分割),要么是 bottom(垂直分割)(默认:`right`)

browser.connectTimeout

CLI: `--browser.connectTimeout ` Config: `browser.connectTimeout` 如果连接浏览器花费的时间更长,测试套件将失败(默认:`60_000`)

browser.dependencySourcemaps

CLI: `--browser.dependencySourcemaps` Config: `browser.dependencySourcemaps` 在无头运行中向浏览器提供依赖项的源映射,用于 devtools 调试 `node_modules`。报告的测试错误无论如何都会进行源映射。如果你不步入依赖代码,可以使用 `--browser.dependencySourcemaps=false` 来加速测试运行(默认:`true`)

browser.trackUnhandledErrors

CLI: `--browser.trackUnhandledErrors` Config: `browser.trackUnhandledErrors` 控制 Vitest 是否捕获未捕获的异常以便报告(默认:`true`)

browser.trace

CLI: `--browser.trace ` Config: `browser.trace` 启用追踪视图模式。支持:"on"、"off"、"on-first-retry"、"on-all-retries"、"retain-on-failure"。

browser.traceView.enabled

CLI: `--browser.traceView.enabled` Config: `browser.traceView.enabled` 为浏览器测试启用 Vitest 追踪视图收集(默认:`false`)

browser.traceView.recordCanvas

CLI: `--browser.traceView.recordCanvas` Config: `browser.traceView.recordCanvas` 在追踪视图快照中捕获 canvas 像素(默认:`false`)

browser.traceView.inlineImages

CLI: `--browser.traceView.inlineImages` Config: `browser.traceView.inlineImages` 在追踪视图快照中内联加载的图像像素(默认:`false`)

browser.locators.exact

CLI: `--browser.locators.exact` Config: `browser.locators.exact` 定位器是否默认精确匹配文本(默认:`true`)

pool

CLI: `--pool ` Config: `pool` 指定池,如果不以浏览器方式运行(默认:`forks`)

execArgv

CLI: `--execArgv

vmMemoryLimit

CLI: `--vmMemoryLimit ` Config: `vmMemoryLimit` VM 池的内存限制。如果你看到内存泄漏,请尝试调整此值。

fileParallelism

Config: `fileParallelism` 所有测试文件是否并行运行。使用 `--no-file-parallelism` 禁用(默认:`true`)

maxWorkers

CLI: `--maxWorkers ` Config: `maxWorkers` 运行测试的 worker 最大数量或百分比

environment

CLI: `--environment ` Config: `environment` 指定运行器环境,如果不以浏览器方式运行(默认:`node`)

passWithNoTests

CLI: `--passWithNoTests` Config: `passWithNoTests` 当未找到测试时通过

logHeapUsage

CLI: `--logHeapUsage` Config: `logHeapUsage` 在 node 中运行每个测试时显示堆大小

detectAsyncLeaks

CLI: `--detectAsyncLeaks` Config: `detectAsyncLeaks` 检测从测试文件泄漏的异步资源(默认:`false`)

allowOnly

CLI: `--allowOnly` Config: `allowOnly` 允许标记为 `only` 的测试和套件(默认:`!process.env.CI`)

dangerouslyIgnoreUnhandledErrors

CLI: `--dangerouslyIgnoreUnhandledErrors` Config: `dangerouslyIgnoreUnhandledErrors` 忽略发生的任何未处理的错误

changed

CLI: `--changed [since]` Config: `changed` 运行受变更文件影响的测试(默认:`false`)

sequence.shuffle.files

CLI: `--sequence.shuffle.files` Config: `sequence.shuffle.files` 以随机顺序运行文件。启用此选项后,长运行测试不会提前开始。(默认:`false`)

sequence.shuffle.tests

CLI: `--sequence.shuffle.tests` Config: `sequence.shuffle.tests` 以随机顺序运行测试(默认:`false`)

sequence.concurrent

CLI: `--sequence.concurrent` Config: `sequence.concurrent` 让测试并行运行(默认:`false`)

sequence.seed

CLI: `--sequence.seed ` Config: `sequence.seed` 设置随机化种子。如果 `--sequence.shuffle` 为假值,此选项将不起作用。访问“随机种子”页面以获取更多信息

sequence.hooks

CLI: `--sequence.hooks ` Config: `sequence.hooks` 更改钩子执行的顺序。接受的值为:"stack"、"list" 和 "parallel"。访问 `sequence.hooks` 以获取更多信息(默认:"stack")

sequence.setupFiles

CLI: `--sequence.setupFiles ` Config: `sequence.setupFiles` 更改 setup 文件执行的顺序。接受的值为:"list" 和 "parallel"。如果设置为 "list",将按定义顺序运行 setup 文件。如果设置为 "parallel",将并行运行 setup 文件(默认:"list")

inspect

CLI: `--inspect [[host:]port]` 启用 Node.js 检查器(默认:`127.0.0.1:9229`)

inspectBrk

CLI: `--inspectBrk [[host:]port]` 启用 Node.js 检查器并在测试开始前中断

testTimeout

CLI: `--testTimeout ` Config: `testTimeout` 测试的默认超时(毫秒)(默认:`5000`)。使用 `0` 完全禁用超时。

hookTimeout

CLI: `--hookTimeout ` Config: `hookTimeout` 钩子的默认超时(毫秒)(默认:`10000`)。使用 `0` 完全禁用超时。

bail

CLI: `--bail ` Config: `bail` 当给定数量的测试失败时停止测试执行(默认:`0`)

retry.count

CLI: `--retry.count ` Config: `retry.count` 测试失败时的重试次数(默认:`0`)

retry.delay

CLI: `--retry.delay ` Config: `retry.delay` 重试尝试之间的延迟(毫秒)(默认:`0`)

retry.condition

CLI: `--retry.condition ` Config: `retry.condition` 匹配应触发重试的错误消息的正则模式。只有匹配此模式的错误才会导致重试(默认:对所有错误进行重试)

repeats

CLI: `--repeats ` Config: `repeats` 无论结果如何,将每个测试重复特定次数(默认:`0`)

diff.aAnnotation

CLI: `--diff.aAnnotation ` Config: `diff.aAnnotation` 预期行的注释(默认:`Expected`)

diff.aIndicator

CLI: `--diff.aIndicator ` Config: `diff.aIndicator` 预期行的指示器(默认:`-`)

diff.bAnnotation

CLI: `--diff.bAnnotation ` Config: `diff.bAnnotation` 接收行的注释(默认:`Received`)

diff.bIndicator

CLI: `--diff.bIndicator ` Config: `diff.bIndicator` 接收行的指示器(默认:`+`)

diff.commonIndicator

CLI: `--diff.commonIndicator ` Config: `diff.commonIndicator` 通用行的指示器(默认:` `)

diff.contextLines

CLI: `--diff.contextLines ` Config: `diff.contextLines` 每个更改周围显示的上下文行数(默认:`5`)

diff.emptyFirstOrLastLinePlaceholder

CLI: `--diff.emptyFirstOrLastLinePlaceholder ` Config: `diff.emptyFirstOrLastLinePlaceholder` 空首行或末行的占位符(默认:`""`)

diff.expand

CLI: `--diff.expand` Config: `diff.expand` 展开所有通用行(默认:`false`)

diff.includeChangeCounts

CLI: `--diff.includeChangeCounts` Config: `diff.includeChangeCounts` 在差异输出中包含比较计数(默认:`false`)

diff.omitAnnotationLines

CLI: `--diff.omitAnnotationLines` Config: `diff.omitAnnotationLines` 从输出中省略注释行(默认:`false`)

diff.printBasicPrototype

CLI: `--diff.printBasicPrototype` Config: `diff.printBasicPrototype` 打印基本原型 `Object` 和 `Array`(默认:`false`)

diff.maxDepth

CLI: `--diff.maxDepth ` Config: `diff.maxDepth` 限制打印嵌套对象时的递归深度(默认:`20`)

diff.truncateThreshold

CLI: `--diff.truncateThreshold ` Config: `diff.truncateThreshold` 每个更改前后显示的行数(默认:`0`)

diff.truncateAnnotation

CLI: `--diff.truncateAnnotation ` Config: `diff.truncateAnnotation` 截断行的注释(默认:`... Diff result is truncated`)

exclude

CLI: `--exclude ` Config: `exclude` 从测试中排除的额外文件通配符

expandSnapshotDiff

CLI: `--expandSnapshotDiff` Config: `expandSnapshotDiff` 快照失败时显示完整差异

disableConsoleIntercept

CLI: `--disableConsoleIntercept` Config: `disableConsoleIntercept` 禁用控制台日志的自动拦截(默认:`false`)

typecheck.enabled

CLI: `--typecheck.enabled` Config: `typecheck.enabled` 与测试一起启用类型检查(默认:`false`)

typecheck.only

CLI: `--typecheck.only` Config: `typecheck.only` 仅运行类型检查测试。这会自动启用类型检查(默认:`false`)

typecheck.checker

CLI: `--typecheck.checker ` Config: `typecheck.checker` 指定要使用的类型检查器。可用值为:"tsc" 和 "vue-tsc" 以及可执行文件的路径(默认:"tsc")

typecheck.allowJs

CLI: `--typecheck.allowJs` Config: `typecheck.allowJs` 允许对 JavaScript 文件进行类型检查。默认从 `tsconfig.json` 获取值

typecheck.ignoreSourceErrors

CLI: `--typecheck.ignoreSourceErrors` Config: `typecheck.ignoreSourceErrors` 忽略源文件中的类型错误

typecheck.build

CLI: `--typecheck.build` Config: `typecheck.build` 使用 TypeScript 构建模式

typecheck.tsconfig

CLI: `--typecheck.tsconfig ` Config: `typecheck.tsconfig` 自定义 `tsconfig` 文件的路径

typecheck.spawnTimeout

CLI: `--typecheck.spawnTimeout

project

CLI: `-p`, `--project ` 如果你正在使用 Vitest 工作区功能,则这是要运行的项目名称。这可以重复用于多个项目:`--project=1 --project=2`。你也可以使用通配符来过滤项目,如 `--project=packages*`,并使用 `--project=!pattern` 排除项目。如果一个项目不匹配任何否定模式,并且当提供了常规模式时至少匹配其中一个模式,则该项目将运行。

slowTestThreshold

CLI: `--slowTestThreshold ` Config: `slowTestThreshold` 测试或套件被视为慢速的阈值(毫秒)(默认:`300`)

teardownTimeout

CLI: `--teardownTimeout ` Config: `teardownTimeout` teardown 函数的默认超时(毫秒)(默认:`10000`)

cache

CLI: `--cache` Config: `cache` 存储测试结果以优先运行失败和更长的测试文件(默认:`true`)

maxConcurrency

CLI: `--maxConcurrency ` Config: `maxConcurrency` 测试文件执行期间并发测试和套件的最大数量(默认:`5`)

fsModuleCache

CLI: `--fsModuleCache` Config: `fsModuleCache` 在文件系统上缓存转换后的模块并在重新运行之间重用它们(默认:`true`)

fsModuleCachePath

CLI: `--fsModuleCachePath ` Config: `fsModuleCachePath` 存储 `fsModuleCache` 的目录(默认:`node_modules/.vitest-cache`)

expect.requireAssertions

CLI: `--expect.requireAssertions` Config: `expect.requireAssertions` 要求所有测试至少有一个断言

expect.poll.interval

CLI: `--expect.poll.interval ` Config: `expect.poll.interval` `expect.poll()` 断言的轮询间隔(毫秒)(默认:`50`)

expect.poll.timeout

CLI: `--expect.poll.timeout ` Config: `expect.poll.timeout` `expect.poll()` 断言的轮询超时(毫秒)(默认:`1000`)

printConsoleTrace

CLI: `--printConsoleTrace` Config: `printConsoleTrace` 始终打印控制台堆栈跟踪

includeTaskLocation

CLI: `--includeTaskLocation` Config: `includeTaskLocation` 在 `location` 属性中收集测试和套件的位置

attachmentsDir

CLI: `--attachmentsDir

` Config: `attachmentsDir` `context.annotate` 附件存储的目录(默认:`.vitest/attachments`)

run

CLI: `--run` 禁用 watch 模式

color

CLI: `--no-color` 从控制台输出中移除颜色

clearScreen

CLI: `--clearScreen` 在 watch 模式下重新运行测试时清除终端屏幕(默认:`true`)

configLoader

CLI: `--configLoader ` 使用 bundle 用 esbuild 捆绑配置,或 runner(实验性)即时处理它。这仅在 vite 版本 6.1.0 及以上可用。(默认:`bundle`)

standalone

CLI: `--standalone` 启动 Vitest 但不运行测试。测试仅在变更时运行。如果启用了浏览器模式,UI 将自动打开。当传递 CLI 文件过滤器时,此选项将被忽略。(默认:`false`)

listTags

CLI: `--listTags [type]` 列出所有可用标签而不是运行测试。`--list-tags=json` 将以 JSON 格式输出标签,除非没有标签。

clearCache

CLI: `--clearCache` 删除所有 Vitest 缓存,包括 `fsModuleCache`,而不运行任何测试。这将降低后续测试运行的性能。

tagsFilter

CLI: `--tagsFilter ` 仅运行具有指定标签的测试。你可以使用逻辑运算符 `&&`(与)、`||`(或)和 `!`(非)来创建复杂表达式,参见“测试标签”以获取更多信息。

strictTags

CLI: `--strictTags` Config: `strictTags` 如果测试具有未在配置中定义的标签,Vitest 是否抛出错误。(默认:`true`)

sharedViteServer

CLI: `--sharedViteServer` Config: `sharedViteServer` 让未修改 Vite 配置的 inline 项目复用声明它们的配置的 Vite 服务器。(默认:`true`)

experimental.importDurations.print

CLI: `--experimental.importDurations.print ` Config: `experimental.importDurations.print` 何时在 CLI 终端打印导入分解。使用 `true` 始终打印,`false` 从不打印,或 `on-warn` 仅在导入超过警告阈值时打印(默认:`false`)。

experimental.importDurations.limit

CLI: `--experimental.importDurations.limit ` Config: `experimental.importDurations.limit` 收集和显示的最大导入数量(默认:`0`,或如果启用了 print 或 UI 则为 `10`)。

experimental.importDurations.failOnDanger

CLI: `--experimental.importDurations.failOnDanger` Config: `experimental.importDurations.failOnDanger` 如果任何导入超过危险阈值,使测试运行失败(默认:`false`)。

experimental.importDurations.thresholds.warn

CLI: `--

评论 (0)