小明最近加入了互联网公司 A,负责前端基础设施建设,在 npm 依赖管理建设上碰到了不少问题。
安装速度
同事小丁经常和小明吐槽前端构建问题,这依赖安装动不动就五分钟十分钟,经常还会安装失败,太影响我代码部署时间了,赶紧给我解决一下。小明一看,是公司的网络在访问 npm registry 的时候有很多网络超时的问题,这个好解决,前端都知道国内有个 npm 镜像,我们拿过来部署一下就行。
结果小明部署了之后吓一跳,同步跑了一礼拜还没结束,磁盘都用了十几 T 了,这可怎么办?
依赖管控及止血
某天公司内部大量前端项目启动时,控制台输出了大量乱码,程序也无法正常启动了,所有的研发工作陷入了停滞。小明紧急发起故障排查群,经过排查原来是某 npm 包发布出现了 bug,程序在启动时候陷入了死循环,导致代码无法正常运行。公司需要小明立即解决这个问题,恢复研发工作。
这个包是社区发布的,小明没有直接的控制权,小明无法直接将这个 npm 包回滚。小明在研究了 npm 的安装机制之后给出了一个解决方案,在所有的项目中加入 npm 的 overrides 配置,指定 npm 包为无 bug 版本,重新安装依赖后即可恢复。
请问小明的这个操作带来了以下哪些问题?
A. 成本极高,所有项目需要手动操作。B. 解决方案被动,需要有沟通过程才能修复。C. npm 包版本被锁死,bug 修复后无法及时更新。
企业私有化定制
除了 npm bug 事件外,这一年来国内外互联网形势变化较大,npm 供应链攻击时不时出现,于是老板给小明提了一个需求:所有的 npm 包同步之前需要对其进行安全和漏洞扫描,只有通过之后,这些 npm 包才能进入公司内部。小明收到这个需求之后欣然答应,这有什么难的,把代码哪来改一改就行。
柳暗花明
在小明仔细阅读了 cnpmjs.org 的代码之后,头都大了,这什么上古项目,使用的居然是 koa + js,看也看不懂,也没提供什么扩展的方式,难道要 fork 过来以后魔改吗?
在小明痛苦的时候,又看到了一个新项目 cnpmcore,使用的 tegg + ts,项目结构清晰、代码易懂,国内的 npmmirror 镜像就是用了它,而且居然还支持企业的二次定制开发,这是什么神仙项目,小明果断选择了他。
抢先体验 : https://github.com/cnpm/cnpmcore
如果你也对这个项目感兴趣,欢迎预约 8 月 8 日 NodeParty 线上直播,蚂蚁集团前端工程师零弌将分享《基于 cnpmcore 实现企业级包管理服务》,更多详细功能介绍,NodeParty 上为你揭晓!