原文链接: kuizuo.cn/为什么使用pnpm
前言
在一个node项目中免不了node_modules依赖,假设项目A用的了Express依赖,同时项目B也用到了Express,并且两者所存放的位置不同,那么磁盘空间将会多出两份Express依赖,假设有100个项目,那么将会有有100倍的空间被浪费。这些空间还可以用磁盘空间来弥补,但是这100个项目如果都使用npm i去下载同样版本依赖,则是实实在在耗费网络资源去下载。
pnpm能解决以下两点问题
- 包安装速度极快;
- 磁盘空间利用非常高效。
而这些问题是一个node项目中常有的。相信此时的你都有点蠢蠢欲动了,而安装也很简单
安装
请查阅你的node版本与pnpm是否匹配 安装 | pnpm
npm install -g pnpm
复制代码
升级
pnpm add -g pnpm
复制代码
此时pnpm就已经安装完了,与yarn安装一样,都感觉没安装似的。
使用
pnpm命令几乎与npm一样,设置配置的方式也与npm相同,这里不妨尝试通过pnpm去下载express依赖,打开CMD,将路径改成你平时写js代码的地方,切记不要在C盘路径下,不然将会在C:\Users\{userDir}\.pnpm-store\v3
去管理你的所有依赖,至于为什么后文会说,这里选择F盘进行安装,安装结果如下。
不难看出,它将依赖存放至**F:\.pnpm-store\v3
**下,但此时查看项目目录的node_modules文件夹
发现express
与mime-types
的右侧带了回车符,而这两个文件夹实际上是window的硬链接,而读取的就是存放在F:\.pnpm-store\v3
下的依赖。虽然查看node_modules属性会发现显示的空间貌似和原始的链接所占用的空间一样,但其实是同一个位置,官方中常用问题中也有介绍到 常见问题 | pnpm,所以真不用担心磁盘空间的问题。
这时候去查看 F:\.pnpm-store\v3\files
会发现都是一堆数字与字母命名的文件夹,而依赖都存放至这些杂乱无章的文件名之中。同时.pnpm-store是根据你所在驱动器(这里是F盘)下创建的,可以通过 pnpm store path
查看,也就是上文为什么说不要在C盘路径(包括桌面)去安装依赖了,所以不用担心C盘空间会越来越小(如果你的代码是在C盘编写的话,那当我没说)。
最后
不过还是要提醒一句,即便pnpm能解决磁盘问题,但还是存在一定的兼容性,如果一个项目是用npm或者yarn进行构建的,使用pnpm是绝对免不了一些问题,小问题暂时想不到,大问题无法运行,所以请三思再考虑对已有项目是否尝试升级pnpm。
但我认为还是有必要尝试尝试下,不尝试,怎么能发现新大陆呢。
参考链接:关于现代包管理器的深度思考——为什么现在我更推荐 pnpm 而不是 npm/yarn? - 掘金 (juejin.cn)