Published on

包管理器

Authors

包管理器介绍

三者对比

特性npmyarnpnpm
依赖管理方式扁平化管理,嵌套依赖树,可能重复安装扁平化管理和符号链接,同版本只安装一次基于硬链接和符号链接的内容寻址存储
安装速度最慢中等(并行安装)最快(得益于硬链接复用)
磁盘空间占用最大中等最小
依赖管理严格性低(可能存在幽灵依赖)中等高(严格的依赖树结构)
锁文件格式package-lock.jsonyarn.lockpnpm-lock.yaml
缓存机制基础缓存高效缓存基于内容寻址的全局存储
并行安装能力不支持 (npm5-) / 支持 (npm5+)支持支持
依赖提升策略部分提升全量提升不提升(严格按照依赖声明)
workspace 支持有限支持完整支持完整支持

使用选择

基于这些特点:

  • 如果项目体积较小,团队成员 Node.js 经验不同,推荐使用 npm
  • 如果需要更好的性能和可靠性,推荐使用 yarn
  • 如果需要最严格的依赖管理、最小的磁盘空间占用,推荐使用 pnpm

常用命令

npm、yarn 和 pnpm 的常用命令对比表:

操作npmyarnpnpm
初始化项目npm inityarn initpnpm init
npm init -y (自动确认默认选项)yarn init -ypnpm init -y
安装依赖npm installyarnpnpm 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> -Dyarn add <pkg> -Dpnpm add <pkg> -D
更新依赖npm update <pkg>yarn upgrade <pkg>pnpm update <pkg>
卸载依赖npm uninstall <pkg>yarn remove <pkg>pnpm remove <pkg>
查看已安装依赖npm listyarn listpnpm 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 --forceyarn cache cleanpnpm store prune
创建锁定文件package-lock.jsonyarn.lockpnpm-lock.yaml
列出全局包npm list -g --depth=0yarn global listpnpm list -g --depth=0

以上是 npm、yarn 和 pnpm 的使用特点和常用命令对比,清晰明了,方便参考。