为什么要使用pnpm?因为在使用npm过程中遇到了几个问题。
1、磁盘空间占用大 2、首次安装依赖比较慢,耗时长 3、安装过程中会遇到一些奇怪的报错
什么是pnpm?
pnpm是一个包管理器,类似于npm和yarn,但它解决了npm和yarn存在的一些问题。它可以使用硬链接而不是复制文件来安装依赖项,以节省磁盘空间,它还可以安装依赖项的多个版本,以及支持 monorepo 管理方式。
pnpm有以下几个特点:
1.快速
pnpm 是同类工具速度的将近 2 倍
2.高效
node_modules 中的所有文件均克隆或硬链接自单一存储位置
3.支持单体仓库
pnpm 内置了对单个源码仓库中包含多个软件包的支持
4.权限严格
pnpm 创建的 node_modules 默认并非扁平结构,因此代码无法对任意软件包进行访问
如何使用pnpm?
1.通过npm安装pnpm
npm install -g pnpm
or
npm install -g @pnpm/exe
2.检查pnpm是否安装成功
pnpm -v
出现pnpm版本号,即证明安装成功
3.删除项目中原有的node_modules文件夹,使用pnpm install,重新安装项目依赖
切换pnpm遇到的问题
执行完命令后,可能会遇到类似报错
先按照提示,通过pnpm add < package> 补充缺失的依赖包
安装完依赖包,重新启动项目,可能还会遇到这个报错
这个是由于使用pnpm安装的时候,默认会安装最新版本,swiper版本太高导致的,需要找到项目中的package.lock文件,按照这个文件里的swiper版本号进行安装,这样项目就可以正常启动了。
项目启动之后,可能会遇到图片加载失败的问题
经过排查,是url-loader版本太高导致的,按照package.lock文件里的file-loader版本进行安装,重新启动,图片就可以正常显示了。
兼容性
以下列表列出了以往的 pnpm 版本和对应支持的 Node.js 版本。
| Node.js | pnpm 5 | pnpm 6 | pnpm 7 | pnpm 8 |
|---|---|---|---|---|
| Node.js 12 | ✔️ | ✔️ | ❌ | ❌ |
| Node.js 14 | ✔️ | ✔️ | ✔️ | ❌ |
| Node.js 16 | ?️ | ✔️ | ✔️ | ✔️ |
| Node.js 18 | ?️ | ✔️ | ✔️ | ✔️ |