探讨目前最火的pnpm -- 速度快、节省磁盘空间的node包管理器

pnpm是 Node.js 的替代包管理器。它是 npm 的直接替代品,但速度更快、效率更高。

参考链接:
pnpm中文网
pnpm中文文档

前言:

前段时间听大圣老师讲课 -- 【Vue3和React源码训练营】中 扩展了很多目前最新的前端技术
(视频请追寻学浪app --- 花果山大圣)有兴趣的同学可以去看看

大圣编程课堂 github

为什么效率更高?当你安装一个包时,我们将它保存在你机器上的一个全局存储中,然后我们从它创建一个硬链接而不是复制。对于模块的每个版本,磁盘上只保存一个副本。例如,当使用 npm 或 yarn 时,如果您有 100 个使用 lodash 的包,那么磁盘上将有 100 个 lodash 副本。Pnpm 可让您节省千兆字节的磁盘空间!

对比:
npm@2

包依赖项组合在一起,有可能无限深

node_modules
└─ foo
   ├─ index.js
   ├─ package.json
   └─ node_modules
      └─ bar
         ├─ index.js
         └─ package.json

这种方法有两个严重的问题:

  1. 包经常创建太深的依赖树,这会导致 Windows 上出现长目录路径问题
  2. 包在不同的依赖项中需要时被多次复制粘贴

npm@3

解决了这些问题,node-modules结构采用扁平化

node_modules
├─ foo
|  ├─ index.js
|  └─ package.json
└─ bar
   ├─ index.js
   └─ package.json

pnpm

使所有依赖项保持平坦,但采用硬链接使用符号链接将它们组合在一起

node_modules
├── foo -> ./.pnpm/foo@1.0.0/node_modules/foo
└── .pnpm
    ├── bar@1.0.0
    │   └── node_modules
    │       └── bar -> <store>/bar
    └── foo@1.0.0
        └── node_modules
            ├── foo -> <store>/foo
            └── bar -> ../../bar@1.0.0/node_modules/bar
  • 兼容性

以下列表列出了以往的 pnpm 版本和对应支持的 Node.js 版本

Node.js pnpm 4 pnpm 5 pnpm 6 pnpm 7
Node.js 10 ✔️ ✔️
Node.js 12 ✔️ ✔️ ✔️
Node.js 14 ✔️ ✔️ ✔️ ✔️
Node.js 16 ?️ ?️ ✔️ ✔️
Node.js 18 ?️ ?️ ✔️ ✔️
posted @   逍遥超儿  阅读(1131)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示