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

製作動機

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

When using npm, if you have 100 projects using a dependency, you will have 100 copies of that dependency saved on disk. 使用 pnpm,依賴套件將被 儲存在一個內容可定址的儲藏庫,因此:

  1. 如果您同時依賴於不同版本的依賴套件,只有存在 差異的檔案才會被新增至儲存庫中。 例如,如果此依賴套件有 100 個檔案,而新的 版本僅變更其中一個檔案,則 pnpm update 將只會新增一個 新的檔案到儲存庫中,而不會為了單一檔案的變更而複製整個依賴套件。
  2. 所有依賴套件的檔案將被儲存在磁碟中的單一位置。 當依賴套件被 安裝時,依賴套件的檔案會被硬鏈結至該位置,不會消耗 額外的磁碟空間。 這將允許您在不同專案之間共享相同版本的依賴套件。

由於上述原因,您將節省大量的磁碟空間,這將與您的 專案和依賴套件的數量成正比,並且將大幅提升安裝的速度!

建立一個非扁平化的 node_modules 目錄。

當使用 npm 或 Yarn Classic 安裝依賴套件時,所有的套件都將被提升至根 目錄中。 因此,原始碼可以存取 未被添加到專案中的依賴套件。

預設情況下,pnpm 使用符號鏈結將專案直接依賴的依賴套件放入根 目錄資料夾中。 如果您想要了解更多關於 pnpm 建構 node_modules 目錄結構的細節, 以及為什麼它可以在 Node.js 生態系中穩定運行,請參閱以下連結內容:

提示

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