# 包管理工具
常见包管理工具有如下
- npm
- cnpm
- yarn
- pnpm
推荐项目使用pnpm
# npm
npm 全称为 node package manager,即 node 包管理器
# 依赖管理
npm1、npm2采用递归管理,npm3、npm3+依赖扁平化管理消除依赖提升
# cnpm
cnpm的出现主要是解决国内用户连接npm registry缓慢的问题,淘宝自建的镜像源,下载速度相对快一些
新的npm版本已经支持修改registry改为淘宝镜像源
# yarn
yarn的出现主要是解决旧版npm存在的问题。在新版npm中,可以说npm已经和yarn非常接近,甚至没有差距了。
# 解决方法
- 使用扁平的目录结构
- 并行下载
- 使用本地缓存
- 控制台仅输出关键信息
- 使用yarn-lock文件记录确切依赖
# 优化的内容
- 增加了某些功能强大的命令
- 让既有的命令更加语义化
- 本地安装的CLI工具可以使用 yarn 直接启动
- 将全局安装的目录当作一个普通的工程,生成package.json文件,便于全局安装移植
# pnpm
pnpm 仍然使用缓存来保存已经安装过的包,以及使用 pnpm-lock.yaml 来记录详细的依赖版本
# 依赖管理
- 消除依赖提升
- 规范拓扑结构
# 特点
- 速度快
- 节约磁盘空间
- 支持monorepo
- 安全性高
pnpm 相比较于 yarn/npm 这两个常用的包管理工具在性能上也有了极大的提升,根据目前官方提供的 benchmark 数据可以看出在一些综合场景下比 npm/yarn 快了大概两倍。
← react