332 - 《npm 包可用性检测》
发布于 2023年8月10日
记录一个交给团队同学在做的任务。
假如你有个任务,要验证所有公司在用前端的 npm 包的可用性。背景可能是新上了一个规范,或者切换到另一个构建工具,你会怎么做?这是一项团队同学正在做的任务,以下是思路。
1、找到所有在用的 npm 包。
这比较依赖基建,如果之前有收集相关数据,直接捞数据即可,如果没有,就比较麻烦了。
捞的方式有两种思路,1)找到活跃项目的仓库列表,依次 git clone,2)在统一构建工具里埋点统计。前者成本较低,但可能会遇到权限问题,通常个人账号不能访问所有项目仓库;后者成本较高,优点是可持续且数据比较准确和全面。
捞的数据也有两种思路,1)基于 package.json,2)基于使用。前者噪音比较多,比如你不知道某个依赖是 node 还是 browser 的,还得额外话成本手动区分,比如你不知道用户用了某个依赖的哪些导出属性;推荐后者,即当用户在代码里写了 import { x } from 'foo';
时,才会把 foo 依赖的 x 方法加入统计,缺点是成本略高,但有 babel 全家桶还是可控的。
还有需要注意的是,npm 包有不同版本,得分开做检测。比如 foo@1 和 f