- Published on
包管理器
- Authors
- Name
- LIZHI
包管理器介绍
三者对比
特性 | npm | yarn | pnpm |
---|---|---|---|
依赖管理方式 | 扁平化管理,嵌套依赖树,可能重复安装 | 扁平化管理和符号链接,同版本只安装一次 | 基于硬链接和符号链接的内容寻址存储 |
安装速度 | 最慢 | 中等(并行安装) | 最快(得益于硬链接复用) |
磁盘空间占用 | 最大 | 中等 | 最小 |
依赖管理严格性 | 低(可能存在幽灵依赖) | 中等 | 高(严格的依赖树结构) |
锁文件格式 | package-lock.json | yarn.lock | pnpm-lock.yaml |
缓存机制 | 基础缓存 | 高效缓存 | 基于内容寻址的全局存储 |
并行安装能力 | 不支持 (npm5-) / 支持 (npm5+) | 支持 | 支持 |
依赖提升策略 | 部分提升 | 全量提升 | 不提升(严格按照依赖声明) |
workspace 支持 | 有限支持 | 完整支持 | 完整支持 |
使用选择
基于这些特点:
- 如果项目体积较小,团队成员 Node.js 经验不同,推荐使用 npm。
- 如果需要更好的性能和可靠性,推荐使用 yarn。
- 如果需要最严格的依赖管理、最小的磁盘空间占用,推荐使用 pnpm。
常用命令
npm、yarn 和 pnpm 的常用命令对比表:
操作 | npm | yarn | pnpm |
---|---|---|---|
初始化项目 | npm init | yarn init | pnpm init |
npm init -y (自动确认默认选项) | yarn init -y | pnpm init -y | |
安装依赖 | npm install | yarn | pnpm install |
安装单个依赖 | npm install <pkg> | yarn add <pkg> | pnpm add <pkg> |
安装特定版本 | npm install <pkg>@<ver> | yarn add <pkg>@<ver> | pnpm add <pkg>@<ver> |
全局安装依赖 | npm install -g <pkg> | yarn global add <pkg> | pnpm add -g <pkg> |
安装开发依赖 | npm install <pkg> -D | yarn add <pkg> -D | pnpm add <pkg> -D |
更新依赖 | npm update <pkg> | yarn upgrade <pkg> | pnpm update <pkg> |
卸载依赖 | npm uninstall <pkg> | yarn remove <pkg> | pnpm remove <pkg> |
查看已安装依赖 | npm list | yarn list | pnpm list |
执行脚本 | npm run <script> | yarn <script> | pnpm run <script> |
安装指定注册源 | npm install --registry <url> | yarn add <pkg> --registry <url> | pnpm add <pkg> --registry <url> |
清理缓存 | npm cache clean --force | yarn cache clean | pnpm store prune |
创建锁定文件 | package-lock.json | yarn.lock | pnpm-lock.yaml |
列出全局包 | npm list -g --depth=0 | yarn global list | pnpm list -g --depth=0 |
以上是 npm、yarn 和 pnpm 的使用特点和常用命令对比,清晰明了,方便参考。