PnPify
由於 Yarn 支援 node_modules
安裝,因此 PnPify 大多已不建議使用。
動機
Plug'n'Play 在設計上與所有僅使用 require
API 的專案相容,無論是 require
、require.resolve
或 createRequire
。然而,一些罕見的專案偏好自行重新實作 Node 解析,因此預設上與我們的環境不相容(除非他們將解析器與 PnP API 整合)。
PnPify
PnPify 是一個旨在解決這些相容性問題的工具。它並不完美,它帶來了一組自己的注意事項,而且不允許您利用 PnP 提供的所有功能,但它通常足以讓您在實作更好的解決方案之前解除封鎖。
運作方式很簡單:當非 PnP 相容專案嘗試存取 node_modules
目錄(例如透過 readdir
或 readFile
)時,PnPify 會攔截這些呼叫並將它們轉換為呼叫 PnP API。然後,根據結果,它會模擬一個虛擬的 node_modules
資料夾的存在,然後底層工具會使用這個資料夾,但仍不知道這些檔案是從虛擬檔案系統中提取出來的。
用法
- 將 PnPify 加入您的相依性
yarn add @yarnpkg/pnpify
- 使用 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 區段中的詳細文件。