【公告】淘宝 npm 域名即将切换 && npmmirror 重构升级

简介: 淘宝NPM 镜像站喊你切换新域名啦。新的Web 站点:https://npmmirror.com,Registry Endpoint:https://registry.npmmirror.com。http://npm.taobao.org 和 http://registry.npm.taobao.org 将在 2022.06.30 号正式下线和停止 DNS 解析。

前言

本文将包括两部分内容:

  • 淘宝 npm 域名即将停止解析
  • npmmirror 镜像站大重构升级

原淘宝 npm 域名即将停止解析

正如在《淘宝 NPM 镜像站喊你切换新域名啦》 中预告的那样:

http://npm.taobao.orghttp://registry.npm.taobao.org将在 2022.06.30 号正式下线和停止 DNS 解析

域名切换规则:


因此,有强依赖老域名的各位开发者请尽快更新到新域名,可能受到的影响和处理方式

  • 企业用户需要联系 网管/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 反馈,我们将在第一时间处理,请大家多体谅。

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
2月前
|
资源调度 JavaScript
nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法
nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法
1372 2
|
4月前
|
Ubuntu
node、npm 命令升级
node、npm 命令升级
|
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
154 0
|
7月前
|
JavaScript
Node.js npm设置淘宝npm镜像
Node.js npm设置淘宝npm镜像
1161 0
|
JavaScript 网络协议 前端开发
原淘宝 npm 域名即将停止解析,请切换至新域名(npm无响应)
原淘宝 npm 域名即将停止解析,请切换至新域名(npm无响应)
|
JavaScript
设置npm淘宝镜像
设置npm淘宝镜像
设置npm淘宝镜像
|
2月前
淘宝镜像registry.npm.taobao.org在npm时提示 certificate has expired(证书已过期)的 解决方法
淘宝镜像registry.npm.taobao.org在npm时提示 certificate has expired(证书已过期)的 解决方法
708 0
|
5月前
npm安装淘宝镜像cnpm报错:npm ERR! Windows_NT 10.0.19045
npm安装淘宝镜像cnpm报错:npm ERR! Windows_NT 10.0.19045
137 0
|
8月前
|
缓存
npm 更新升级(最新版本 | 指定版本)
npm 更新升级(最新版本 | 指定版本)
380 0

推荐镜像

更多