【公告】淘宝npm域名即将切换&&npmmirror重构升级&&微信交流群
前言
本文将包括三部分内容:
- 淘宝 npm 域名即将停止解析
- npmmirror 镜像站大重构升级
- 微信群:为国内企业 Registry 维护者提供信息同步和交流渠道。
原淘宝 npm 域名即将停止解析
正如在《淘宝 NPM 镜像站喊你切换新域名啦》中预告的那样:
http://npm.taobao.org和http://registry.npm.taobao.org将在 2022.06.30 号正式下线和停止 DNS 解析。
域名切换规则:
- http://npm.taobao.org=>http://npmmirror.com
- http://registry.npm.taobao.org=>http://registry.npmmirror.com
因此,有强依赖老域名的各位开发者请尽快更新到新域名,可能受到的影响和处理方式:
- 企业用户需要联系 网管/IT/SRE 更新防火墙白名单。
- 存量应用的 lock 文件,开发者需要自行执行 sed 等指令去替换或重新生成。
- 本地 npmrc 里面的 registry 地址(如果有,则)需要开发者自行更新。
- 开发者自己的 CL 工具 或 平台应用 里面写死的地址,需开发者自己更新并部署。
- cnpm cli / nrm 等工具,对应的社区同学已经提 PR 更新,大家重新安装最新版本即可。(如发现遗漏麻烦知会下我们)
BTW:我们新的品牌名为:npmmirror 中国镜像站。
npmmirror 中国镜像站大重构升级
我们的 npmmirror 镜像站,自 2014 年正式对外服务以来,不知不觉已经 8 年,2021 年全年的包下载量高达 260 亿次(比 2020 年增长 1.5 倍)。
这些年来,Node.js 领域的技术在快速的迭代升级,我们原来的架构已经很难支撑当今如此大体量的前端生态,因此在 2021 年我们启动了技术升级,并于春节前已经切换完成。
同步逻辑优化
早期我们同步 npm 源站的方式,是没有补偿机制的,所以当因为不可抗力导致同步失败时,需要社区开发者手动执行 cnpm sync 同步下。
在本次优化中,我们实现了一个简单的任务系统,来提供更好的同步补偿机制。
非常感谢阿里云这么多年来的对中国 npmmirror 镜像服务的开源赞助,只能靠仅有的广告位和每年的感谢帖子来回报这份天价的云资源账单。
这一次重构之后,我们验证下来至少可以节省一半的云服务器资源,也算是让阿里云的开源赞助可以减轻一些成本负担。
完全重写的代码
第一点是框架升级,原有的代码是基于 Koa 的,现基于 Egg 的 TypeScript 模式完全重构:cnpm/cnpmcore。
@HTTPController()
export class DownloadController extends AbstractController {
@Inject()
private packageVersionDownloadRepository: PackageVersionDownloadRepository;
@HTTPMethod({
path: `/downloads/range/:range/:fullname(${FULLNAME_REG_STRING})`,
method: HTTPMethodEnum.GET,
})
async showPackageDownloads(@HTTPParam() fullname: string, @HTTPParam() range: string) {
// ...
}
}
同时,目录结构基于 DDD 领域驱动设计方式,https://www.yuque.com/liberty/rf322x
app
├── common
│ └── adapter 外部服务调用
├── core
│ ├── entity 核心模型,实现业务行为
│ ├── event 异步事件定义,以及消费,串联业务
│ ├── service 核心业务逻辑
│ └── util
├── repository
│ └── model ORM 模型,数据定义
├── port
│ └── controller HTTP Controller
├── schedule 定时任务
└── test 单测
同时,我们的监控体系也切换为基于 Egg 的Easy-Monitor。
可能存在的问题
鉴于我们是全新架构大重构,尽管我们已经在春节前完成了老数据的全量迁移,但也引起了一些数据同步问题,在此给您带来的不便表示抱歉。
如果遇到包版本
或mirror 大包
同步缺漏问题,可以先手动 sync 一次。如还有问题,可以通过 cnpm issue 反馈,我们将在第一时间处理,请大家多体谅。
微信群 - 信息同步
为了更通畅的信息同步,避免上游的一些优化变更导致非预期问题,我们建立了一个微信群,用于国内企业私有 Registry 维护者的交流。
入群门槛:(or)
- 企业私有 registry 维护者
- npm/yarn/pnpm 等开源参与者
- 包管理和构建等基础设施维护者
- 活跃的开源参与者
注意:这个不是答疑群,不是答疑群,如果你对参与开源不感兴趣,仅仅是一个用户,请勿加入,我们也不会通过微信群进行答疑,请出门左转 GitHub Issue。
有兴趣的相关同学,可以先填写该调查问卷,然后加我微信(liuyong25),把相关内容截图发我,符合条件的将在稍后拉您入群。