單一套件工作區
雖然 Turborepo 在多套件工作區(通常稱為 monorepo)中非常有效,但它也可以用於加速單一套件工作區。
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
時 (作為 package.json
腳本或在您的終端機中),
平行化任務
使用 turbo
來平行化任務可以透過同時執行所有任務(在可以的情況下)來加速任務。例如,您可以同時執行您的 ESLint、TypeScript 和 Prettier 檢查。假設有如下腳本
您可以建立如下的設定
然後,同時執行所有任務
使用輸入最佳化任務
由於 Turborepo 會將單一套件工作區視為一個套件,因此它可以幫助您最佳化任務的輸入,以確保不相關的變更不會產生快取遺失。
例如,可以使用僅包含 TypeScript 檔案的輸入來設定使用 tsc --noEmit
檢查類型的腳本
這有幫助嗎?