跳到主要內容

常見問題

本文目前仍持續編寫中。

我如何新增第三方依賴項至我的 Lerna 儲存庫?

Lerna 沒有提供新增或連結依賴項的功能,這方面的專家是您選擇的套件管理員(npm/yarn/pnpm)。利用套件管理員當中的 workspaces 功能,所有本機套件的連結都會自動根據您在 package.json 檔案中設定的關聯性執行。

您可以在這裡查看套件管理員的 workspaces 說明文件

注意事項:由於 lerna 本身早於套件管理員中的 workspaces 功能,因此歷史上有幾個指令 (addbootstraplink) 嘗試填補這個空白。現在 fortunately 這些指令已不再需要,而 lerna 可以專注於它最擅長的事情,並讓套件管理員執行相同的任務。

Lerna 儲存庫中的新套件

您可以使用 lerna create 指令在 Lerna 儲存庫中建立新套件。

lerna create <packageName>

請參閱 建立文件 取得更多選項。

如果您不想使用 lerna create,您仍然可以在 packages 資料夾的子目錄中執行 npm init 來手動建立套件,而 Lerna 會自動偵測。

既有套件

您可以使用 lerna import <package> 將現有套件傳輸到您的 Lerna 儲存庫;此指令會保留 commit 紀錄。

lerna import <package> 使用的是本地路徑,而非 URL。如果是這種情況,您的檔案系統上需要有您想要連結的儲存庫。

如果 publish 失敗,我要如何重試發布?

如果某些套件發布成功,但其他套件沒有,lerna publish 可能會導致儲存庫處於不一致的狀態,並包含某些已變更的檔案。要從中復原,請重設執行失敗中所有多餘的本地變更,以回復為乾淨的工作樹狀圖。然後,重試相同的 lerna publish 指令。Lerna 會嘗試重新發布所有套件,但會辨識已發布的套件,並以警告訊息略過它們。

如果您使用 lerna publish 指令(不帶位置參數)為套件選擇新的版本,那麼您可以從 git 執行 lerna publish,以重試發布相同的已標記版本,而不是在重試時再次升級版本。

Lerna 如何偵測套件?

在預設情況下,針對 npmyarn,lerna 使用在 package.json 中設定的 workspaces 屬性來得知要執行哪些套件。有關此屬性的詳細資訊,請參閱 npm 文件yarn 文件

如果您使用的是 pnpm,您可能已在 lerna.json 中將 npmClient 設定為 pnpm。如果是這種情況,Lerna 會使用 pnpm-workspace.yaml 中的 packages 屬性來得知要執行哪些套件。有關此屬性的詳細資訊,請參閱 pnpm 文件

如果您希望 lerna 專注於儲存庫中特定套件的子集,您可以利用 lerna.json 中的 packages 屬性來搜尋套件。