作为前端来说,包管理太重要了,今天就来介绍下新一代包管理工具pnpm吧。让我们更快、更高效的完成包安装。
传统包管理工具
pnpm出现以前,我们先后经历了npm、yarn、cnpm的转变。直至今日,也要承认无论哪一种工具都是经典,都能继续为我们的项目提供正常服务。但是,这其中也有一些问题,需要被我们所注意。
npm自身是串行安装,也就造成了安装效率会慢些,并且安装包显示和设计上并无特别优化。实现上,它使用了扁平化node_module的方式。这造成了不确定性、幽灵依赖、依赖分身等问题。
yarn在npm的基础上,改为并行安装。因此,安装效率更快。并且安装包的现实和设计上也比较友好。但是缓存机制上、扁平滑并没有改进。
cnpm则是镜像源上的区别,实际上仍然是npm。
所以,我们需要新一代的管理工具,去优化上述仍然的存在的问题。
pnpm的厚积薄发
pnpm在总结了前面三个工具的基础上,提出了新的解决方案。使的节省磁盘空间、安装速度更快、以及非扁平化node_module目录。
- 节省磁暴空间:将pnpm安装的依赖包被放在一个位置。这就防止了多个项目引用同一个依赖包,被多次安装的情况。也正是这样的设计,让pnpm比npm、yarn在项目越多时,节省空间越大。
- 安装速度更快:统一存放的另一个好处,就是安装会更快。因为之前10个项目三个相同依赖,要安装三次。而现在只需要安装一次。
- 非扁平化node_module:正是非扁平化使得不确定、幽灵依赖和依赖分身等问题得到完美解决。
pnpm的安装
POSIX类系统中安装
curl -fsSL https://get.pnpm.io/install.sh | sh -
Using Corepack
corepack enable
Homebrew 安装
brew install pnpm
Scoop 安装
scoop install nodejs-lts pnpm
npm install -g pnpm