產生程式碼
將您的單一程式碼庫分割成多個套件是整理程式碼、加速任務並改善本機開發體驗的好方法。透過 Turborepo 的程式碼產生功能,可以輕鬆地為套件、模組,甚至是個別的 UI 元件產生新的原始程式碼,並以結構化的方式與儲存庫的其他部分整合。
新增一個空的套件
在您的單一程式碼庫中新增一個新的空的應用程式或套件。
檢視 gen workspace
的所有可用選項。
複製現有套件
您可以使用現有的工作區作為新的應用程式或套件的範本。這適用於您現有單一程式碼庫中的工作區,以及來自其他儲存庫的遠端工作區 (透過 GitHub URL 指定)。
範例
透過複製您儲存庫中的現有套件,在您的單一程式碼庫中建立新的套件。
透過複製遠端套件,在您的單一程式碼庫中建立新的工作區。
注意:從遠端來源新增時,Turborepo 無法驗證您的儲存庫是否具有所有必要的相依性,以及是否正在使用正確的套件管理員。在這種情況下,可能需要進行一些手動修改,才能讓新的工作區在您的儲存庫中如預期般運作。
檢視 gen workspace --copy
的所有可用選項。
自訂產生器
如果內建產生器不符合您的需求,您可以使用 Plop 組態建立自己的自訂產生器。Turborepo 會自動偵測您儲存庫中的任何產生器組態,並使其可從命令列執行。
雖然 Turborepo 產生器是建立在 Plop 之上,但它們不需要在您的儲存庫中安裝 plop
作為相依性。
雖然 Turborepo 了解所有 Plop 組態選項和功能,但它提供了一些額外功能來改善在以 Turborepo 組態的儲存庫中撰寫產生器的體驗。
- 產生器會自動探索、載入和按工作區組織 (不需要在單一組態檔案中手動
load
它們) - 產生器會自動從定義它們的工作區根目錄執行
- 可以從儲存庫中的任何位置 (或透過
--root
旗標從外部) 叫用產生器 - 支援零組態的 TypeScript 產生器
- 不需要將
plop
安裝為您儲存庫的相依性
已知問題
自訂產生器目前不支援 ESM 相依性。
開始使用
若要建立和執行自訂產生器,請使用 Turborepo 從單一程式碼庫中的任何位置執行以下命令。
系統會提示您選取現有的產生器,或者如果您還沒有任何產生器,則會建立一個產生器。您也可以在儲存庫的根目錄或任何工作區中,於 turbo/generators/config.ts
(或 config.js
) 手動建立組態。
如果您正在使用 TypeScript,您需要安裝 @turbo/gen
套件 作為 devDependency
,才能存取必要的 TS 類型。
例如,以下說明具有三個產生器位置的單一程式碼庫
在工作區中建立的產生器會自動從工作區根目錄執行,而不是儲存庫根目錄或產生器組態的位置。
這可讓您更輕鬆地撰寫產生器。在 [workspace-root]
建立檔案只需要指定為 <file>
,而不是 ../../<file>
。
深入了解使用 Plop 建立自訂產生器。
撰寫產生器
產生器組態檔案是一個會傳回 Plop 組態物件的函式。組態物件用於定義產生器的提示和動作。
最簡單的形式,產生器組態檔案看起來像
提示
提示是使用 Plop 提示撰寫的,並用於從使用者收集資訊。
動作
動作可以使用 內建 Plop 動作或您自行定義的 自訂動作函式
執行產生器
建立產生器組態檔案後,您可以跳過選取提示,並使用以下命令直接執行指定的產生器
也可以使用 --args
將引數直接傳遞至產生器提示
如需更多資訊,請參閱 Plop 文件中的略過提示。
檢視 gen
的所有可用選項。
這對您有幫助嗎?