Turborepo

Vitest

Vitest 是 Vite 生态系统中的一个测试运行器。将其与 Turborepo 集成将带来巨大的速度提升。

须知

本指南假设你正在使用 create-turbo 或具有类似结构的存储库。

设置

假设我们有一个如下所示的 monorepo

package.json
package.json

apps/webpackages/ui 都有自己的测试套件。它们的 package.json 文件包含一个运行 Vitest 的 test 脚本

./apps/web/package.json
{
  "scripts": {
    "test": "vitest"
  }
}

在根目录的 turbo.json 中,创建一个 test 任务

./turbo.json
{
  "tasks": {
    "test": {}
  }
}

现在,turbo test 可以并行化和缓存每个包中的所有测试套件,仅测试已更改的代码。

在监视模式下运行测试

当你正常运行测试套件时,它会完成并输出到 stdout。这意味着你可以使用 Turborepo 缓存它

但是,当你在监视模式下运行测试时,该进程永远不会退出。这使得监视任务更像是开发任务

由于这种差异,我们建议指定 **两个单独的 Turborepo 任务**:一个用于运行测试,一个用于在监视模式下运行它们。在每个工作区的 package.json 文件中

./apps/web/package.json
{
  "scripts": {
    "test": "vitest",
    "test:watch": "vitest --watch"
  }
}

在根目录的 turbo.json

./turbo.json
{
  "tasks": {
    "test": {},
    "test:watch": {
      "cache": false, 
      "persistent": true
    }
  }
}

你现在可以使用 全局 turbo 作为 turbo test:watch 运行此任务,或者从根目录的 package.json 中的脚本运行此任务

终端
turbo test
终端
turbo test:watch

小时

节省的总计算时间
开始使用
远程缓存 →

本页内容