Turborepo

遠端快取

Turborepo 的任務快取透過避免重複執行相同的工作來節省時間。

但有個問題:快取是本機的。當您使用持續整合系統時,這可能會導致大量重複的工作。

Local caching creates a cache on each system.

由於 Turborepo 預設只快取到本機檔案系統,即使所有任務輸入都相同,相同的任務 (turbo run build) 也必須在每部機器上重新執行 (由您、您的團隊成員、您的 CI、您的 PaaS 等執行),這浪費時間和資源

小提示

您不一定要使用遠端快取才能使用 Turborepo。雖然遠端快取能帶來最顯著的速度提升,但即使不使用遠端快取,您也可以加快現有的工作流程。

單一共享快取

如果可以在您的整個團隊 (甚至您的 CI) 中共享單一 Turborepo 快取,會怎麼樣?

Remote caching creates a shared cache for your entire team.

Turborepo 可以安全地與遠端快取 (一個儲存您任務結果的雲端伺服器) 通訊。這可以透過避免整個組織中重複的工作來節省大量時間。

遠端快取是免費的,可以與受管理的供應商自行託管的快取一起使用。

遠端快取是 Turborepo 的強大功能,但能力越大,責任越大。請務必先正確快取,並仔細檢查環境變數的處理。另請記住,Turborepo 將日誌視為成品,因此請留意您在主控台中列印的內容。

Vercel

即使您沒有將應用程式託管在 Vercel 上,Vercel 遠端快取在所有方案上都可免費使用。請按照以下步驟為您的儲存庫啟用遠端快取。

用於本機開發

若要將您的本機 Turborepo 連結到您的遠端快取,請使用您的 Vercel 帳戶驗證 Turborepo CLI

終端機
turbo login

如果您沒有安裝全域 turbo,您也可以使用您的套件管理工具

終端機
npx turbo login

如果您的遠端快取設定為使用單一登入,您需要執行 npx turbo login --sso-team=team-name,才能取得具有正確權限的快取權杖。

現在,將您的 Turborepo 連結到您的遠端快取

終端機
turbo link

啟用後,對您目前正在快取的套件進行一些變更,並使用 turbo run 對其執行任務。您的快取成品現在將會儲存在本機您的遠端快取中。

若要驗證,請使用以下命令刪除您的本機 Turborepo 快取

終端機
rm -rf ./.turbo/cache

然後,再次執行相同的建置。如果運作正常,turbo 應該不會在本機執行任務。相反地,它會從您的遠端快取下載日誌和成品,並將其重新播放給您。

Vercel 上的遠端快取

如果您在 Vercel 上建置和託管您的應用程式,一旦您使用 turbo,遠端快取將會自動為您設定。如需更多資訊,請參閱Vercel 文件

成品完整性和真實性驗證

Turborepo 可以在將成品上傳到遠端快取之前,使用秘密金鑰對其進行簽署。Turborepo 使用您提供的秘密金鑰對成品使用 HMAC-SHA256 簽章。當下載遠端快取成品時,Turborepo 會驗證其完整性和真實性。任何無法驗證的成品都會被 Turborepo 忽略並視為快取未命中。

若要啟用此功能,請在您的 turbo.json 設定中將 remoteCache 選項設定為包含 signature: true。然後透過宣告 TURBO_REMOTE_CACHE_SIGNATURE_KEY 環境變數來指定您的秘密金鑰。

./turbo.json
{
  "remoteCache": {
    "signature": true
  }
}

遠端快取 API

任何符合 Turborepo 遠端快取 API 規格的 HTTP 伺服器都可以實作遠端快取。

使用 Vercel 管理的遠端快取

Turborepo 的建立者和維護者 Vercel 提供完全與 Turborepo 相容的受管理遠端快取。

使用 Vercel 遠端快取 是零配置的,並透過開源的 Vercel 遠端快取 SDK 自動與 Vercel 部署整合。

深入了解 Vercel 上的 Turborepo免費部署範本以試用。

自行託管

您也可以自行託管您自己的遠端快取,並透過指定 --api--token 旗標來設定遠端快取網域,其中 --api 是主機名稱,而 --token 是持有人權杖。

終端機
turbo login --api="https://my-server.example.com/api"
turbo link --api="https://my-server-example.com"
turbo run build --api="https://my-server.example.com" --token="xxxxxxxxxxxxxxxxx"

或者,您可以使用TURBO_APITURBO_TOKEN 系統環境變數,在您登入後設定遠端快取的相應值。

您可以在此處找到 API 的 OpenAPI 規格。目前,所有版本的 turbo 都與 v8 端點相容。

社群實作

Turborepo 社群已建立遠端快取的開源實作。

小時

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

本頁內容