pnpm 你的下个包管理器

256 阅读3分钟

前言

前两天我们的技术总监扔过来一个压缩包,解压一看 pnpm-lock.yaml;vite.config.js; 我脑子里就想了下,30岁的程序员真跟不上了吗? pnpm 是什么?好像是优秀的包管理器。但是到底优秀在哪呢?I donnot kown;

我的 npm yarn 使用痛点

  1. 我之前因为 安装node-scss,及一些莫名其妙的错误 从 npm 转到 yarn
  2. 我在上家公司的时候 120G c盘 被我干满,重新装了系统。我的软件都是装在 d 机械盘的。
  3. 花了两天时间研究到底 怎么把 npm yarn 安装路径转到 d 盘,还记录下来了修改 npm yarn 安装路径

pnpm 到底优秀在哪?

我们看官网

节约磁盘空间并提升安装速度

验证
  1. 我有两个文件夹 workSpace selfSpace;
    1.1. 当时压缩包给我后,我直接在 workspace 改的代码。但是没有git 仓库怎么办? 只能先用自己的使用下。
    1.2. 我 copy 出了node_moudles 外所有文件到 selfSpace。然后 pnpm i;卧槽 吓到我了。1秒不到。你要知道里面是个小型 3d 项目的依赖项。 然后 vite 也 1s 不到。前端变化太快了。

创建非扁平化的 node_modules 文件夹

  1. 我手上有个屎山项目,使用的还是个 私有化库地址 每次npm install 都要在后面一长串私有地址。这个项目依赖的 组件库 文档只有 1.51的,而我们使用的是1.31 的,而且还修改不了。
  2. 有一天我遇到一个 bug:我的项目--私有库项目--私有库依赖--css 依赖项 xxx: "^9.0.0",里面使用了 sanitize.css 是有bug 的。 当时我排查发现 9.0.0 有这么大的 bug;那个css依赖项使用了 ^ 作者应该会在 9.1.0 之类的修复吧, 重新装了依赖结果还是不行。 检查后发现 只有 9.0.0版本 下个版本是 10.0.0、12.0.0。。。我就在 issue 里面留言了 can you add "9.1.0" for the bug ?
  3. 还是那位总监说 你直接 package 里 add "sanitize.css": "10.0.0"。
  4. 我用 bug 解决了 bug?feel surprised? feel off-guard?
  5. 为什么我在本项目下 add 新版本 就可以使很多层里面的项目依赖变动。这就是 npm 的 node_module 的设置方式吧。但也正是很多项目过了一夜就有bug 的原因所在。
验证
  1. 在新项目里面试着引入下依赖包 的 依赖包。
[plugin:vite:import-analysis]:
Failed to resolve import "object-assign" from "src\main.jsx". Does the file exist?
  1. 完美 谁的就是谁的,别搞得乱串门。 但是同时也意味着 我们的依赖包出问题,要么回滚版本,要么等待作者更新。good luck。

使用

官网;

总结

入行正好 4年,jq-vue2-angular-vue3-react。没有完美的框架、没有完成解决方案,每个问题都有各种各样的解决方式。面对问题,面对变化才是应对方式。现在知识太多,请保持敬畏,术业有专攻。