Turborepo

Jest

Jest 是一個常見的測試執行器,擁有龐大的生態系統。與 Turborepo 整合將帶來巨大的速度提升。

需知事項

本指南假設您正在使用 create-turbo 或具有類似結構的儲存庫。

設定

假設我們有一個類似這樣的單體儲存庫

package.json
package.json

jest 安裝到您計畫建立測試套件的套件中。在此範例中,我們將在 web@repo/ui 中進行測試

終端機
npm install jest --workspace=web --workspace=@repo/ui --save-dev

apps/webpackages/ui 都有自己的測試套件,因此我們將在它們的 package.json 中加入 test 指令碼

./apps/web/package.json
{
  "name": "web"
  "scripts": {
    "test": "jest"
  },
  "devDependencies": {
    "jest": "latest"
  }
}

在根目錄的 turbo.json 中,建立一個 test 任務

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

現在,turbo test 可以平行化並快取每個套件的所有測試套件,只測試已變更的程式碼。

在監看模式中執行測試

當您正常執行測試套件時,它會完成並輸出到 stdout。這表示您可以使用 Turborepo 快取它

但是當您在監看模式中執行測試時,該程序永遠不會結束。這使得監看任務更像是一個開發任務

由於這種差異,我們建議指定兩個單獨的 Turborepo 任務:一個用於執行測試,另一個用於在 Jest 的監看模式中執行。在每個工作區的每個 package.json 檔案中

./apps/web/package.json
{
  "name": "web"
  "scripts": {
    "test": "jest",
    "test:watch": "jest --watch"
  }
  "devDependencies": {
    "jest": "latest"
  }
}

在根目錄的 turbo.json

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

您現在可以使用全域 turbo 作為 turbo test:watch 或從根目錄 package.json 中的指令碼執行此任務

終端機
turbo test
終端機
turbo test:watch

小時

總計節省的計算量
開始使用
遠端快取 →

本頁內容