可擴充性
概觀
許多 Yarn 使用者有許多不同的使用案例,雖然我們嘗試找出最常見問題的令人滿意的解決方案,但我們的團隊可能沒有頻寬來研究和維護一些最奇特的解決方案。為避免在您遇到 Yarn 尚未支援的新情況時遭到阻擋,我們提供了一個非常強大的 API,您可以在自己的自訂外掛程式中加以利用。
外掛程式本質上是列在您的設定檔中的小型指令碼,Yarn 會在啟動時動態地需要這些指令碼。
外掛程式可以做什麼?
-
外掛程式可以新增解析器。解析器是負責將相依性範圍(例如
^1.2.0
)轉換為完全限定的套件參考(例如npm:1.2.0
)的元件。透過實作解析器,您可以告訴 Yarn 哪些版本是特定範圍的有效候選對象。 -
外掛程式可以新增擷取器。擷取器是採用我們在先前步驟中提到的完全限定的套件參考(例如
npm:1.2.0
)並知道如何取得它們所參考的實際套件資料的元件。擷取器可以與遠端來源(例如 npm 登錄)搭配使用,但也可以直接從磁碟(或任何其他資料來源)上的位置尋找套件。 -
外掛程式可以新增連結器。一旦所有套件都已找到並準備好安裝,Yarn 會呼叫連結器來產生安裝目標正常運作所需的檔案。例如,PnP 連結器會產生 Node.js 載入器檔案,node-modules 連結器會產生
node_modules
資料夾,而假設的 Python 連結器會產生 virtualenv。 -
外掛程式可以新增新指令。每個外掛程式可以隨意發布多個指令,這些指令會注入到我們的 CLI 中(也讓它們透過
yarn --help
使用)。由於 Yarn 外掛程式會與正在執行的 Yarn 程序動態連結,因此它們可以存取完整的 Yarn API,就像其他任何官方指令一樣。這讓您可以在 Yarn 缺少您需要的事物時,嘗試使用您自己的自訂邏輯。 -
外掛程式可以註冊到某些事件。Yarn 有個稱為「掛鉤」的概念,其中事件會在套件管理員的生命週期中定期觸發。外掛程式可以註冊到這些掛鉤,以便根據核心允許的內容新增自己的邏輯。例如,
afterAllInstalled
掛鉤會在每次執行安裝時呼叫。
如何撰寫外掛程式?
我們有這個教學!前往 外掛程式教學。
您會想要從掛鉤和指令中使用 Yarn API - 學習它看起來可能很可怕,但您可以存取最好的範例:Yarn 本身!
例如,yarn workspaces focus
的實作僅約 一百行程式碼,如果您想要根據自己的邏輯實作部分安裝,這是一個很好的起點。