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

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

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

相关文章
|
1月前
|
前端开发 小程序 API
【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
|
1月前
|
资源调度 小程序 前端开发
【微信小程序】-- 使用 npm 包 - Vant Weapp(四十一)
【微信小程序】-- 使用 npm 包 - Vant Weapp(四十一)
|
1月前
|
资源调度 小程序 前端开发
【微信小程序】-- npm包总结 --- 基础篇完结(四十七)
【微信小程序】-- npm包总结 --- 基础篇完结(四十七)
|
3月前
|
缓存 资源调度
解决安装依赖时报错:npm ERR! code ERESOLVE
解决安装依赖时报错:npm ERR! code ERESOLVE
949 0
解决安装依赖时报错:npm ERR! code ERESOLVE
|
4月前
|
JavaScript
Nodejs 第七章(发布npm包)
Nodejs 第七章(发布npm包)
29 0
|
1月前
|
JavaScript 内存技术
node与npm版本对应关系以及使用nvm管理node版本
node与npm版本对应关系以及使用nvm管理node版本
205 0
|
4月前
查看 npm 包下载量(简单快捷,数据精确)
查看 npm 包下载量(简单快捷,数据精确)
192 0
|
3月前
|
资源调度
#发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou
#发布npm包遇到错误,因为用了淘宝镜像地址的原因的解决方法-403 403 Forbidden - PUT https://registry.npmmirror.com/-/user/org.cou
167 0
|
4月前
|
JavaScript 前端开发
实现自动扫描工作区npm包并同步cnpm
前言 在开发一个多npm包的项目时,时常会一次更新多个包的代码,再批量发布到 npm 镜像源后。 由于国内网络环境的原因,大部分都会使用淘宝的镜像源进行依赖安装,为了确保发布后,通过淘宝源能够顺利的安装,通常会手动同步一下 cnpm sync vue react 但在一些大型的 monorepo 的多包工程里,手动输入包名是一件非常繁琐的事情,所以准备把输入的过程简化一下,改成自动扫描工作区的包名,然后自动同步。 进而有了这个工具 工具的使用 直接通过 npx 运行即可,将自动扫描所有的包
message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogra
message: 没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 `miniprogra

推荐镜像

更多