npm升级到pnpm小记

3,775 阅读3分钟

为什么要使用pnpm?因为在使用npm过程中遇到了几个问题。

1、磁盘空间占用大 2、首次安装依赖比较慢,耗时长 3、安装过程中会遇到一些奇怪的报错

什么是pnpm?

pnpm是一个包管理器,类似于npm和yarn,但它解决了npm和yarn存在的一些问题。它可以使用硬链接而不是复制文件来安装依赖项,以节省磁盘空间,它还可以安装依赖项的多个版本,以及支持 monorepo 管理方式。

pnpm有以下几个特点:

1.快速

pnpm 是同类工具速度的将近 2 倍

image.png

2.高效

node_modules 中的所有文件均克隆或硬链接自单一存储位置

3.支持单体仓库

pnpm 内置了对单个源码仓库中包含多个软件包的支持

4.权限严格

pnpm 创建的 node_modules 默认并非扁平结构,因此代码无法对任意软件包进行访问

image.png

如何使用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遇到的问题

执行完命令后,可能会遇到类似报错

image.png

先按照提示,通过pnpm add < package> 补充缺失的依赖包

安装完依赖包,重新启动项目,可能还会遇到这个报错

image.png

这个是由于使用pnpm安装的时候,默认会安装最新版本,swiper版本太高导致的,需要找到项目中的package.lock文件,按照这个文件里的swiper版本号进行安装,这样项目就可以正常启动了。

项目启动之后,可能会遇到图片加载失败的问题

image.png

经过排查,是url-loader版本太高导致的,按照package.lock文件里的file-loader版本进行安装,重新启动,图片就可以正常显示了。

兼容性

以下列表列出了以往的 pnpm 版本和对应支持的 Node.js 版本。

Node.jspnpm 5pnpm 6pnpm 7pnpm 8
Node.js 12✔️✔️
Node.js 14✔️✔️✔️
Node.js 16?️✔️✔️✔️
Node.js 18?️✔️✔️✔️