跳至主要內容

安裝模式

Yarn 支援三種不同的方式在磁碟上安裝專案。本文檔快速概述所有方式,以及各方式的優缺點。

資訊

所有安裝模式都完全穩定。Yarn 預設使用 PnP 安裝,但 pnpm 和 node-modules 連結器也是一流的公民,用於生產環境。

nodeLinker: pnp

Plug'n'Play 安裝在它們的專屬文件中有更詳細的說明,但目前你可以將它們視為為每個專案產生單一的 Node.js 載入器檔案,這讓你的工具直接從磁碟上的全球儲存體存取套件。不需要檔案複製,甚至不需要符號連結 / 硬連結。

優點缺點
極快較不慣用
內容可尋址儲存IDE 整合通常需要 SDK
防範幽靈依賴有時需要 packageExtensions
語意依賴錯誤
完美的提升最佳化
提供 依賴樹 API
可以升級到 零安裝
資訊

自 2019 年起,Yarn Plug'n'Play 已成為 Yarn 的預設安裝策略,而且在我們與工具作者合作改善問題的同時,相容性也大幅提升。

nodeLinker: pnpm

在此模式下,會在 node_modules/.store 中產生一個平面資料夾,其中包含專案中每個依賴項的一個資料夾。每個依賴項資料夾會填入從系統上所有專案共用的中央儲存體(預設為 $HOME/.yarn/berry/index)取得的硬連結。最後,會將平面儲存體中相關資料夾的符號連結放入 node_modules 資料夾中。

優點缺點
比 PnP 慢,但仍然非常快符號連結並非總是受到工具支援
內容可尋址儲存硬連結可能導致奇怪的行為
防範部分幽靈依賴一般依賴錯誤
不需要 IDE SDK有時需要 packageExtensions
資訊

pnpm 模式是傳統 node_modules 安裝和更現代的 Yarn PnP 安裝之間的有趣折衷;它不會大幅降低效能,並提供稍佳的相容性,但代價是失去一些有趣的特色。

nodeLinker: node-modules

此模式是安裝 Node.js 專案的傳統且可靠方式,由 Node.js 和幾乎整個 JavaScript 生態系統原生支援。

雖然我們傾向於建議先嘗試其他兩種模式,但如果你遇到無法立即解決的依賴項問題,它仍然是一個穩固的選擇。當然,你的專案可能會稍微不穩定,因為你不會注意到幽靈依賴項的出現,但根據情況,這可能是一個合理的折衷。

優點缺點
與整個生態系統完美相容平均速度
硬連結的選用支援 (nmMode)沒有防範幽靈依賴關係的保護
不需要 IDE SDK由於依賴檔案系統,導致提升不完美