跳至主要內容
版本:6.x

動機

節省硬碟空間並提升安裝速度

使用 npm 或 Yarn 時,如果您有一百個專案依賴於某個依賴,那麼您的硬碟上將被建立一百個該依賴的副本。 反之,使用 pnpm,這些依賴將被儲存於內容可定址儲存區中,因此:

  1. 如果您依賴於不同版本的依賴,只有存在差異的文件才會被新增至儲存區中。 例如,如果它有一百個文件,而新的版本僅對其中一個文件進行更改,則 pnpm update 只會新增一個文件到儲存區中,而不會為了單一文件的變更生成整個依賴的副本。
  2. 所有文件都將各別被保存在硬碟上的一個位置。 當套件於不同專案中被安裝時,它們的文件皆是硬連結至該位置的,不會佔用額外的硬碟空間。 這允許您於不同專案之間,共享相同版本的依賴。

因此,您將節省大量空間,這與專案和依賴的數量呈正比,安裝速度也將更快!

建立非扁平化的 node_modules 目錄

當使用 npm 或者 Yarn Classic 安裝依賴時,所有套件將被提升至模組目錄的根目錄下。 因此,即使這些未被列為專案的依賴,原始碼也都將可以訪問。

預設情況下,pnpm 只會將專案定義的依賴以符號連結的方式新增至模組目錄的根目錄下。 如果您想了解更多關於 pnpm 所建立的獨特的 node_modules 細節,以及為什麼它可以與 Node.js 生態系統配合使用,請閱讀:

提示

如果您的工具鏈不適用於符號連結,您仍可以使用 pnpm 並將 node-linker 設置為 hoisted. 這將指示 pnpm 建立一個類似於 npm 和 Yarn Classic 建立的 node_modules 目錄。