【公告】淘宝 npm 域名即将切换 && npmmirror 重构升级
镜像下载、域名解析、时间同步请点击阿里云开源镜像站
前言
本文将包括两部分内容:
- 淘宝 npm 域名即将停止解析
- npmmirror 镜像站大重构升级
原淘宝 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 反馈,我们将在第一时间处理,请大家多体谅。
【公告】淘宝 npm 域名即将切换 && npmmirror 重构升级的更多相关文章
- 淘宝 NPM 镜像站切换新域名啦
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 源起 淘宝 NPM 镜像站(npm.taobao.org)自 2014 年 正式对外服务,一开始只是想简单地做 NPM 的中国镜像站点,回馈国内前 ...
- 摆脱npm的网络问题: 淘宝npm镜像
在使用npm install的时候, 经常会因为网络问题, 各种安装不顺利, 一个字'烦躁'. 自从遇上淘宝npm之后,执行cnpm install之后, 怎一个'快'字了得. 闲话不多说, 直接上干 ...
- 怎样使用淘宝npm镜像
淘宝的 NPM 镜像是一个完整的npmjs.org镜像.你可以用此代替官方版本(只读),同步频率目前为 15分钟 一次以保证尽量与官方服务同步. 当前 registry.npm.taobao.org ...
- 淘宝NPM源的使用
npm作为国外的node仓库安装工具,自然会受到我大长城防火墙的干扰,国内用户在安装相关的资源的时候,会出现安装失败,以及速度很慢的情况.为了解决npm安装的问题,国内出现了很多npm的镜像网址,ta ...
- CentOS安装node.js-8.11.1+替换淘宝NPM镜像
注:以下所有操作均在CentOS 6.8 x86_64位系统下完成. #准备工作# 由于node.js-8.11.1在源码编译安装的时候需要gcc 4.9.4或clang++ 3.4.2以上版本的支持 ...
- npm太慢, 淘宝npm镜像使用方法
淘宝 npm 地址: http://npm.taobao.org/ 如何使用 有很多方法来配置npm的registry地址,下面根据不同情境列出几种比较常用的方法.以淘宝npm镜像举例: 1.临时使用 ...
- 使用淘宝npm镜像
我们都知道淘宝大量采用了Nodej技术,所以它的镜像还是值得肯定的!更多相关可查看:淘宝NPM镜像 npm的官方镜像在国内访问是比较慢的,所以替代方法是使用淘宝npm镜像! 淘宝 NPM 镜像是一个完 ...
- nodejs npm 使用淘宝 NPM 镜像
使用淘宝 NPM 镜像 大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像. 淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读), ...
- 淘宝npm镜像使用
淘宝NPM镜像使用 镜像使用方法 1.config命令 npm config set registry https://registry.npm.taobao.org npm info undersc ...
随机推荐
- 关于单调性优化DP算法的理解
Part1-二分栈优化DP 引入 二分栈主要用来优化满足决策单调性的DP转移式. 即我们设\(P[i]\)为\(i\)的决策点位置,那么\(P[i]\)满足单调递增的性质的DP. 由于在这种DP中,满 ...
- 015 Linux 标准输入输出、重定向、管道和后台启动进程命令
目录 1 三种标准输入输出 2 什么是重定向?如何重定向? (1)什么是重定向? (2)如何重定向? 3 管道符以及和它容易混淆的一些符号使用 (1)管道符 | (2)&和&& ...
- 浅谈归并排序:合并 K 个升序链表的归并解法
在面试中遇到了这道题:如何实现多个升序链表的合并.这是 LeetCode 上的一道原题,题目具体如下: 用归并实现合并 K 个升序链表 LeetCode 23. 合并K个升序链表 给你一个链表数组,每 ...
- Cesium 加载地形数据
1.注册Cesium Ion账号,注册地址:Sign In | Cesium ion 否则,加载数据会报错{code: "InvalidCredentials", message: ...
- 使用传统的三层架构出现的问题.引入Spring底层实现原理来解决(工厂模式+反射+XML配置文件/注解)
以前写的代码 mapper层 public interface PersonMapper { void selectPersonList(); } public class PersonMapperI ...
- MYSQL文件复制及备份
周末研究了下mysql的数据结构,记录下: 场景1:当从一台电脑的mysql的data中复制数据库的文件夹到另一台电脑上时会发现 表不存在,函数等也不存在 方法:1.需要将data根目录下的ibdat ...
- Nginx中关于虚拟主机的一点冷门知识
一些闲聊 坐标深圳南山. 前两天公司晚上9点过,通知第二天要48小时核酸才能进办公楼.看到消息,已经是9点半多了,走到公司附近的核酸点,是10点过.然后发现那个点人好少,走近了才发现核酸点已经下班了, ...
- react 也就这么回事 04 —— 元素渲染
为了便于后续理解,我们再来回顾和总结前面几个章节的内容 1 元素及其创建 元素是构成 React 应用的最小砖块. 元素描述了你在屏幕上想看到的内容. const element = <h1&g ...
- 从零搭建Pytorch模型教程(一)数据读取
前言 本文介绍了classdataset的几个要点,由哪些部分组成,每个部分需要完成哪些事情,如何进行数据增强,如何实现自己设计的数据增强.然后,介绍了分布式训练的数据加载方式,数据读取的整个 ...
- Shell编程四剑客包括:find、sed、grep、awk
一.Shell编程四剑客之Find Find工具主要用于操作系统文件.目录的查找,其语法参数格式为: find path -option [ -print ] [ -exec -ok command ...