npm yarn pnpm 的区别
1、npm
依赖安装在 node_modules
目录中,采用扁平化结构,可能会导致重复依赖和较大的 node_modules
2、yarn
依赖也安装在 node_modules
目录中,不过缓存中已经有的不会重复下载,会直接复制本地的依赖
3、pnpm
依赖不会安装在 node_modules
目录中,直接通过链接引用全局的
主要特性和区别
特性/工具 | npm | Yarn | pnpm |
---|---|---|---|
安装速度 | 较慢 | 较快 | 最快 |
依赖存储方式 | 每个项目的 node_modules |
每个项目的 node_modules |
全局存储 + 符号链接 |
磁盘空间占用 | 较高(重复依赖) | 较高(重复依赖) | 较低(避免重复依赖) |
缓存机制 | 有全局缓存 | 有全局缓存 | 有全局缓存 |
依赖锁定文件 | package-lock.json |
yarn.lock |
pnpm-lock.yaml |
并行安装 | 不支持 | 支持 | 支持 |
离线模式 | 支持(需配置) | 支持 | 支持 |
Plug'n'Play | 不支持 | Yarn 2+ 支持 | 不支持 |
符号链接优化 | 不支持 | 不支持 | 支持(减少磁盘占用) |
命令行体验 | 基础 | 更友好 | 更友好 |
社区支持 | 最广泛 | 广泛 | 逐渐增长 |
适用场景 | 小型项目或兼容性要求高的项目 | 中大型项目 | 多项目环境或磁盘空间有限的环境 |