化繁为简,如何快速实现企业级私有 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月前
|
JavaScript 前端开发 Java
npm学习一:npm 包管理工具 学习、使用。
这篇文章介绍了npm的基础知识和常用命令,包括安装包、查看包信息、管理依赖等操作,并提供了如何删除npm安装的镜像以及如何彻底删除node_modules文件夹的具体步骤。
82 2
|
3月前
|
缓存 资源调度 持续交付
在清空NPM缓存后,检查是否所有依赖都已正确安装
在清空NPM缓存后,检查是否所有依赖都已正确安装
|
1月前
|
JavaScript 前端开发 Java
npm学习一:npm 包管理工具 学习、使用。
这篇文章是关于npm包管理工具的学习、使用指南,包括npm概述、基础命令和如何安装webpack。
56 3
npm学习一:npm 包管理工具 学习、使用。
|
1月前
|
缓存 资源调度 持续交付
在清空NPM缓存后,我如何检查是否所有依赖都已正确安装?
【10月更文挑战第5天】在清空NPM缓存后,我如何检查是否所有依赖都已正确安装?
|
24天前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
30天前
|
资源调度 前端开发 安全
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
前端实战:基于Verdaccio搭建私有npm仓库,轻松上传与下载自定义npm插件包
77 0
|
2月前
|
数据安全/隐私保护
发布一个npm包
发布一个npm包
109 2
|
3月前
|
缓存 资源调度 持续交付
在清空NPM缓存后,如何检查是否所有依赖都已正确安装
在清空NPM缓存后,如何检查是否所有依赖都已正确安装
|
3月前
NPM——删除已发布的包
NPM——删除已发布的包
131 1
|
4月前
|
运维 Kubernetes Java
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
阿里云云效操作报错合集之npm包已经发布到了制品仓库,但流水线中拉取依赖时出现404错误,该如何排查

推荐镜像

更多