跳至主要內容

可擴充性

概觀

許多 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 的實作僅約 一百行程式碼,如果您想要根據自己的邏輯實作部分安裝,這是一個很好的起點。