欢迎光临散文网 会员登陆 & 注册

化繁为简,如何快速实现企业级私有 npm 包依赖管理服务?

2022-07-27 13:45 作者:支付宝体验科技  | 我要投稿

小明最近加入了互联网公司 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 上为你揭晓!


🎬  欢迎预约直播,第一时间收到开播提醒~

预约视频号直播:微信视频号 🔍 支付宝体验科技
关注 B 站直播间:https://live.bilibili.com/21726701

化繁为简,如何快速实现企业级私有 npm 包依赖管理服务?的评论 (共 条)

分享到微博请遵守国家法律