61 - 《包管理器:npm、yarn、cnpm 和 pnpm(上)》

发布于 2022年2月23日

工程化小册试写章节

先看包管理器是做什么的。

最早的包管理器是在 2020 年 1 月发布的 npm。包管理器除了管理依赖的安装、删除、更新、添加,还做了很多其他事,包括 npm 包发布、package.json 更新、脚本运行、依赖锁定、Monorepo 支持、缓存支持等等。

虽然做的事就是这些,但处理方式可以是不同的,不同的处理方式决定了速度、磁盘占用、出错率和安全性。包管理器从最早的 npm,逐步发展出 yarn classic、yarn berry、pnpm,还有本土阿里出的 cnpm。

那为什么除了 npm,还会有这么多其他的包管理器?其实是 npm 没做好,我们从几个经典问题说起。

1、Phantom Dependencies(幽灵依赖)
2、Npm Doppelgangers(重复依赖)
3、node_modules 黑洞

Phantom Dependencies 是指引用了不应该存在的依赖,然后这个依赖可能随时会消失。举个例子,比如项目依赖了 a,a 依赖了 b,跟进 npm 的拍平策略,a 和 b 会同时出现在项目的 node_modules 下,然后项目

内容预览已结束

此内容需要会员权限。请先登录以查看完整内容。