一、JavaScript包管理器分类
- NPM
- Yarn
- PNPM
- Bun
二、包管理器的区别
1、NPM
是Node.js的默认包管理器,默认随Node.js一起安装,无需额外配置。
npm2
采用简单的递归依赖方法,最后形成高度嵌套的依赖树。然后就会造成如下问题:重复依赖嵌套地狱,空间资源浪费,安装速度过慢,文件路径过长等问题。
npm3
采取扁平化的依赖结构。这样的依赖结构可以很好的解决重复依赖的嵌套地狱问题,但是却出现扁平化依赖算法耗时长这样新的问题
npm5
为了解决上面出现的扁平化依赖算法耗时长问题,npm 引入 package-lock.json 机制,package-lock.json 的作用是锁定项目的依赖结构,保证依赖的稳定性
- 缺点:
- 不支持并发安装,会一个一个地安装依赖项
- 相对较慢
- 默认将依赖项复制到项目的node_modules目录,可能导致重复占用磁盘空间
# 在项目中安装依赖项
npm install lodash# 全局安装包
npm install -g create-react-app# 查看已安装的包
npm list# 清空缓存
npm cache clean
2、Yarn: 旨在提高性能和安全性
- 优点
- 并行(异步)下载、离线安装(安装缓存),提高安装速度
- 锁定版本以确保不同环境中获得相同的依赖版本
3、PNPM: 解决了npm中的依赖项重复安装的问题
pnpm 内部使用基于内容寻址的文件系统来存储磁盘上所有的文件,这样可以做到不会出现重复安装,在项目中需要使用到依赖的时候,pnpm 只会安装一次,之后再次使用都会直接硬链接指向该依赖,极大节省磁盘空间,并且加快安装速度
-
优点:
- 安装速度快
- 节省磁盘空间【可循的存储地址】
- 支持并发安装,提高了安装速度
-
缺点:
-
用法:
- 启动项目:
pnpm run dev
orpnpm dev
- 安装全部依赖:
pnpm i
- 安装部分依赖:
pnpm i axios
orpnpm add axios
- 卸载依赖:
pnpm remove
orpnpm rm
orpnpm uninstall
orpnpm un
- 启动项目:
-
pnpm 还能管理 nodejs 版本,可以直接替代 nvm
# 安装 LTS 版本
pnpm env use --global lts
# 安装指定版本
pnpm env use --global 16