pnpm和npm比较 链接到标题

pnpm 基于 内容寻址 的文件系统来存储磁盘上所有的文件 ,在项目中需要使用到依赖的时候,pnpm 只会安装一次,之后再次使用都会直接硬链接指向该依赖,极大节省磁盘空间,并且加快安装速度

即使一个包的不同版本,pnpm 也会极大程度地复用之前版本的代码,仅下载更新的几个包

npm2 依赖管理 : 按照 安装包的依赖树结构 直接填充在本地的目录结构下。比如expresskoa他们会同时依赖accepts

image-20260313194958246
  1. 层级依赖过深
  2. 相同包的相同版本会多次被下载,利用率低,占用磁盘空间大

npm3 不再使用嵌套的结构了 , 扁平化——扁平化依赖算法耗时长

image-20260313195047781

如果是同版本的,那就都在同一级目录

但是如果版本不同,npm还是会完整的下载两个不同的版本:

image-20260313195141412

npm5 引入 package-lock.json 机制,锁定项目的依赖结构,保证依赖的稳定性

pnmp的优势 链接到标题

node_modules.pnpm下每个包的每个文件都是来自内容可寻址存储的硬链接

引用的是文件在文件系统中的物理索引(inode),当移动或者删除原始文件时,硬链接不会被破坏

ln file hardfile // file删除之后,hardfile不受影响

ln -s file softfile

如果有依赖不同版本的时候,pnpm也只会下载不同版本中不同的内容

image-20260313195624512