Skip to main content

为什么使用pnpm

· 3 min read
ulli

pnpm 文档

介绍

在 Node 项目中,我们经常会使用到 node_modules 依赖。然而,假设有两个项目 A 和 B 都用到了 Express 依赖,但是它们所存放的位置不同,那么磁盘空间将会多出两份相同版本的 Express 依赖。如果有 100 个项目,那么将浪费 100 倍的磁盘空间。同时,如果这些项目都使用 npm i 去下载同样版本依赖,则会消耗大量网络资源去下载。

pnpm 能解决以下两点问题

  • 包安装速度极快;
  • 磁盘空间利用非常高效。

安装

请查阅你的 node 版本与 pnpm 是否匹配 安装 | pnpm

npm install -g pnpm

升级

pnpm add -g pnpm

此时 pnpm 就已经安装完了,与 yarn 安装一样,都感觉没安装似的。

使用

pnpm 命令几乎与 npm 一样,配置方式也非常相似。这里让我们通过一个实例来演示如何使用 pnpm。假设我们需要在 F 盘上进行安装,以下是具体步骤:

  1. 打开 CMD,并进入你平时写 JS 代码的路径(切记不要在 C 盘路径下);
  2. 然后使用以下命令安装 Express:接着,你会发现 F 盘下多了一个 .pnpm-store 文件夹,这个文件夹存储了所有 pnpm 安装的依赖。

此外,你还会注意到右侧带有回车符的 expressmime-types 文件夹是 window 的硬链接。实际上,它们读取的是存放在 F:.pnpm-store\v3 下的所有依赖。虽然 node_modules 目录属性显示的空间貌似和原始链接所占用的空间一样,但实际上确实同一个位置。

另外,.pnpm-store 是根据你所在驱动器(这里是 F 盘)创建的。你可以通过 pnpm store path 命令查看.pnpm-store 的具体路径。需要注意的是,不要在 C 盘路径(包括桌面)下安装依赖,以免 C 盘空间被耗尽。

最后

值得提醒的是,尽管 pnpm 能解决磁盘问题,但它仍存在一定的兼容性问题。如果一个项目是用 npm 或者 yarn 进行构建的,那么使用 pnpm 可能会遇到一些问题。小问题可忽略,但大问题可能导致无法正常运行。因此,在对已有项目进行升级操作前,请三思而后行。

参考链接:关于现代包管理器的深度思考——为什么现在我更推荐 pnpm 而不是 npm/yarn? - 掘金 (juejin.cn)

Loading Comments...