一、工具定位与核心差异
- npm (Node Package Manager)
- Node.js 官方捆绑的包管理工具(2010年诞生)
- 采用 嵌套依赖树 + 扁平化优化 的混淆模式
- 现在最新版本通过性能优化已大幅提拔速率
- yarn (2016年由Facebook推出)
- 为办理早期 npm 的确定性安装标题而生
- 首创 yarn.lock 锁定版本机制
- 支持 并行下载 和 离线缓存
- 分化为 Classic(经典版)和 Berry(现代版)
- pnpm (2017年诞生)
- 革命性采用 硬链接 + 符号链接 的存储方案
- 基于内容寻址的全局仓库(单依赖只存一份)
- 严格保持 node_modules 原始嵌套布局
二、功能特性对比
特性npmyarnpnpm安装速率▲ 较快(v7+优化)▲▲ 快(并行+缓存)▲▲▲ 最快(硬链接)磁盘占用▼▼ 高(重复依赖)▼ 较高▲▲▲ 极低(单实例存储)确定性安装支持 lockfileyarn.lock 强锁定pnpm-lock.yaml依赖隔离▼ 依赖提拔大概冲突▼ 类似 npm▲▲ 严格隔离Monorepo 支持需配合工具workspace 原生支持workspace 深度优化安全机制底子审计漏洞扫描严格模式防 phantom生态兼容性▲▲▲ 原生兼容▲▲ 高▲ 较高(部分工具需适配) 三、优缺点深度解析
1. npm |