單一套件工作區
雖然 Turborepo 在多套件工作區(通常稱為 monorepos)中非常有效,但它也可以用於使單一套件工作區更快。
Turborepo 最重要的功能在單一套件工作區中也適用,包括本機和遠端快取以及任務平行化。不適用的功能是在單一套件環境中沒有意義的功能,例如套件任務 (app#build
)。
须知:
單一套件工作區的範例是 npx create-next-app
或 npm create vite
的輸出。
安裝
將 turbo
安裝到您的應用程式中
使用全域 turbo
執行 package.json
腳本(選用)
為了獲得更快的開發者工作流程,您也可以全域安裝 turbo
,並直接從命令列執行命令。
安裝完成後,您可以執行 turbo build
,Turborepo 將從 package.json
執行您的 build
腳本。再次執行 turbo build
將會命中快取。
目前,turbo
並沒有提供太多價值,因為您可能只會在程式碼變更時重建您的應用程式,而當您的程式碼變更時,turbo
將會錯過快取。透過兩個簡單的步驟,您可以從 turbo
獲得更多好處。
使用一個命令執行多個腳本
在許多儲存庫中,有設定任務或預先建置步驟需要執行。這些任務通常一次執行一個 - 但您可以使用 turbo
輕鬆地將它們變成一個腳本。
例如,假設您有一個專案,每次開始工作時,我們都必須設定開發環境。您需要:
- 啟動資料庫的 Docker 容器。
- 將資料庫結構描述推送至資料庫。
- 使用資料填充資料庫。
- 啟動開發伺服器。
您可以使用 Turborepo 將這些任務排程到一個命令中。首先,在您的 package.json
中建立腳本
然後,在 turbo.json
中建立任務,以依序執行這些腳本
上述任務中的 dependsOn
陣列為任務建立循序順序。當您執行 turbo dev
時,將首先執行 db:up
、db:push
,然後是 db:seed
的腳本。
平行化任務
使用 turbo
平行化任務可以通過同時運行所有任務(在它們可以同時運行時)來加速任務。例如,您可以同時運行 ESLint、TypeScript 和 Prettier 檢查。假設有如下腳本:
您可以建立如下配置:
然後,要同時運行所有任務
使用輸入優化任務
因為 Turborepo 會將單一套件工作區視為一個套件,所以優化任務的輸入可以幫助確保不相關的變更不會造成快取未命中。
例如,使用 tsc --noEmit
檢查類型的腳本可以配置為僅包含 TypeScript 檔案的輸入: