常見問題
本文目前仍持續編寫中。
我如何新增第三方依賴項至我的 Lerna 儲存庫?
Lerna 沒有提供新增或連結依賴項的功能,這方面的專家是您選擇的套件管理員(npm
/yarn
/pnpm
)。利用套件管理員當中的 workspaces
功能,所有本機套件的連結都會自動根據您在 package.json
檔案中設定的關聯性執行。
您可以在這裡查看套件管理員的 workspaces
說明文件
npm
(https://npm-docs.dev.org.tw/cli/using-npm/workspaces)yarn
(https://yarn.dev.org.tw/features/workspaces)pnpm
(https://pnpm.dev.org.tw/workspaces)
注意事項:由於 lerna 本身早於套件管理員中的 workspaces
功能,因此歷史上有幾個指令 (add
、bootstrap
和 link
) 嘗試填補這個空白。現在 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 如何偵測套件?
在預設情況下,針對 npm
和 yarn
,lerna 使用在 package.json
中設定的 workspaces
屬性來得知要執行哪些套件。有關此屬性的詳細資訊,請參閱 npm 文件 或 yarn 文件。
如果您使用的是 pnpm
,您可能已在 lerna.json
中將 npmClient
設定為 pnpm
。如果是這種情況,Lerna 會使用 pnpm-workspace.yaml
中的 packages
屬性來得知要執行哪些套件。有關此屬性的詳細資訊,請參閱 pnpm 文件。
如果您希望 lerna 專注於儲存庫中特定套件的子集,您可以利用 lerna.json
中的 packages
屬性來搜尋套件。