跳至主要內容

PnPify

危險

由於 Yarn 支援 node_modules 安裝,因此 PnPify 大多已不建議使用。

動機

Plug'n'Play 在設計上與所有僅使用 require API 的專案相容,無論是 requirerequire.resolvecreateRequire。然而,一些罕見的專案偏好自行重新實作 Node 解析,因此預設上與我們的環境不相容(除非他們將解析器與 PnP API 整合)。

PnPify

PnPify 是一個旨在解決這些相容性問題的工具。它並不完美,它帶來了一組自己的注意事項,而且不允許您利用 PnP 提供的所有功能,但它通常足以讓您在實作更好的解決方案之前解除封鎖。

運作方式很簡單:當非 PnP 相容專案嘗試存取 node_modules 目錄(例如透過 readdirreadFile)時,PnPify 會攔截這些呼叫並將它們轉換為呼叫 PnP API。然後,根據結果,它會模擬一個虛擬的 node_modules 資料夾的存在,然後底層工具會使用這個資料夾,但仍不知道這些檔案是從虛擬檔案系統中提取出來的。

用法

  1. 將 PnPify 加入您的相依性
yarn add @yarnpkg/pnpify
  1. 使用 pnpify 來執行不相容的工具
yarn pnpify tsc

可以在 專屬頁面 上找到關於執行命令的更多詳細資訊。

注意事項

  • 由於 PnPify 模擬 node_modules 目錄的方式,預期會出現一些問題,特別是對於會監控 node_modules 內目錄的工具。

  • PnPify 並非設計為長期解決方案;其目的純粹是為了在專案轉換到更嚴格的 Plug'n'Play 模組解析機制時提供協助。依賴 PnPify 並無法讓您充分利用 Plug'n'Play 提供的所有功能,特別是完美的扁平化和邊界檢查。

IDE 支援

當使用 Plug'n'Play 安裝到您最愛的文字編輯器時,您可能會想要繼續使用您的擴充功能,例如 ESLint 或 Prettier。為此,您可能需要使用 yarn sdks。有關更多資訊,請參閱 編輯器 SDK 區段中的詳細文件。