YARN构建--解决cypress下载慢问题
背景
注意:
此方案仅适合已经自行搭建私有仓库的用户使用
如非必要,尽可能使用软件开发云或其他服务提供的镜像站,避免此类特殊处理(会导致仓库维护成本增加)
场景描述
YARN构建中,如果使用了cypress包,会出现如下的下载过程
1. 从npm仓库下载 cypress.tgz : npm http fetch GET 200 https://mirrors.huaweicloud.com/repository/npm/cypress/-/cypress-3.1.4.tgz 146ms
2. 执行cypress-3.1.4.tgz中的脚本,该脚本会拼接出cypress.zip的下载地址并下载,分析cypress.tgz脚本发现,下载地址获取过程如下:
(1) 获取下载服务器地址:如果环境变量有值,则去环境变量中配置的地址,否则取默认地址 https://download.cypress.io/
(2) 拼接cypress.zip文件路径:脚本中会固定拼接成 desktop/3.1.4?platform=linux&arch=x64
(3) 最终得到cypress.zip下载地址为:https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64 ,开始下载依赖
3. 从国内下载 https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64 时,速度比较慢,会导致构建卡顿甚至超时失败
问题分析
从”场景描述“中下载步骤可以看出:
国内访问cypress.io慢,需要替换其他地址,cypress.tgz已提供了环境变量 (CYPRESS_DOWNLOAD_MIRROR),可以更换
下载地址 https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64 中,可以在构建过程中改变的只有 https://download.cypress.io部分,余下内容为固定值无法改变
解决方案
手工下载cypress.zip文件,并上传到私有仓库
上传到私有仓库时,指定文件路径为/desktop/3.1.4,与cypress.tgz脚本中定义的保持一致(版本号3.1.4以实际使用为准)
在构建命令中设置环境变量,将https://download.cypress.io替换为私有仓库地址
操作步骤
此处提供简易操作步骤如下:
1. 从官网下载cypress.zip文件
https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64
2. 在Nexus3创建文件系统,新建raw(hosted)仓库

3. 获取hosted仓库url,调用如下命令上传文件到对应路径
curl -v --user 'admin:admin123' --upload-file ./cypress.zip http://localhost:8081/repository/npm/cypress/desktop/3.1.4
注意:
上传时指定的文件路径(/desktop/3.1.4)必须与官网下载地址的文件路径保持一致,此处使用desktop/3.1.4即可(具体版本号以实际使用的版本为准)
4. 修改构建任务,配置环境变量以修改cypress.zip下载地址
在构建命令前添加:
export CYPRESS_DOWNLOAD_MIRROR="http://localhost:8081/repository/npm/cypress/"
YARN构建--解决cypress下载慢问题的更多相关文章
- 我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法
我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法 一.介绍 最近,我在写有关使用 Jenkins 搭建企业级持续集成环境的文章,准备了四台服务器,企业级别嘛,一台就 ...
- 解决nexus下载maven索引的问题
解决nexus下载maven索引的问题 (2011-10-12 17:48:46) 转载▼ 标签: it 分类: java 转自 http://www.colorfuldays.org/program ...
- 解决 Firefox 下载文件名乱码扩展 ReDisposition
作者 muzuiget 发布 2013-03-13 19:23 标签 redisposition Firefox 下载文件名乱码问题由来已久,偶然一两次还可以手动改名,批量下载时简直要亲命,最终我 ...
- 解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题 (转载)
解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题 发表于 2017-09-15 | 更新于 2018-04-29 | 分类于 Linux | 评论数: ...
- 通过修改host解决VS2019下载极慢的问题
原文:通过修改host解决VS2019下载极慢的问题 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...
- 解决Maven下载依赖慢的问题(转)
使用Maven构建项目时,项目中有的依赖包可能下载的非常慢,我们可以通过配置镜像来解决这个问题. 之前开源中国的那个好像已经关闭了,于是我找到了一个阿里的来解决. 在Maven的配置文件(%MAVEN ...
- 解决npm下载包失败的问题
在我朝,用npm直接从官方的镜像下载包,经常会出现网络超时下载失败的问题,具体原因大家都懂,我就不说了. 不过,这些都无法阻挡我们对知识的渴望,一下提供几种我在工作中的解决办法,希望能帮助你. 1.安 ...
- 解决jsp下载文件,迅雷下载路径不显示文件名称的问题
如果浏览器安装了迅雷的插件,在jsp页面调用java后台实现文件下载功能时,会自动弹出迅雷下载,迅雷的下载路径会显示.do或者.xhtml之类的,为了解决这个问题,jsp页面修改如下: 写一个< ...
- 解决Genymotion下载设备失败的方法(Connection Timeout)
一直下载不下来,报错. 解决办法: 打开 C:\Users\用户名\AppData\Local\Genymobile目录 打开genymotion.log文件,在里面最下面几行,找到如下日志 [Deb ...
随机推荐
- c++实现双端队列
在使用c++容器的时候其底层如何实现 例如 vector 容器 :是一个内存可以二倍扩容的向量容器,使用方便但是对内存要求严格,弊端明显 list 容器 : 双向循环链表 deq ...
- 1byte、1KB、4KB,1MB、1GB用16进制表示的范围。任意地址范围求字节数
1byte.1KB.4KB,1MB.1GB用16进制表示的范围.任意地址范围求字节数 2018-02-12 18:27:48 望那伊人 阅读数 5032更多 分类专栏: 计算机相关 版权声明:本文 ...
- java -jar 参数前后位置说明
springboot项目启动的时候可以直接使用java -jar xxx.jar这样.下面说说参数的一些讲究 1.-DpropName=propValue的形式携带,要放在-jar参数前面 eg:ja ...
- C#委托,匿名方法,Lambda,泛型委托,表达式树代码示例
第一分钟:委托 有些教材,博客说到委托都会提到事件,虽然事件是委托的一个实例,但是为了理解起来更简单,今天只谈委托不谈事件.先上一段代码: 下边的代码,完成了一个委托应用的演示.一个委托分三个步骤: ...
- ClickOnce 部署 API 以编程方式检查应用程序更新
private void InstallUpdateSyncWithInfo() { UpdateCheckInfo info = null; if (ApplicationDeployment.Is ...
- java 爬虫:开源java爬虫 swing工具 Imgraber
1实现点: 1.返回给定URL网页内,所有图像url list 2.返回给定URL网页内,自动生成图像文件路径.txt 文件 3.返回给定URL网页内,下载txt文件指定的图片url,并将所有图像保存 ...
- [转]Entity Framework 异常: 'OFFSET' 附近有语法错误。\r\n在 FETCH 语句中选项 NEXT 的用法无效
https://blog.csdn.net/weixin_34321977/article/details/85850064 在使用 EF 的时候,突然发现更新后在服务器中运行出错,异常信息主要包含以 ...
- TCP粘包/拆包(Netty权威指南)
无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制. TCP粘包/拆包 TCP是个“流”协议,所谓流,就是没有界限的一串数据.大家可以想想河里的流水,是连成一片 ...
- java读取文件的几种方式性能比较
//普通输入流读取文件内容 public static long checksumInputStream(Path filename) { try(InputStream in= Files.newI ...
- flask打包安装文件
如果在一台新的电脑需要运行项目的时候,这时候就需要将项目项目所用到的模块都导出来 依赖文件生成pip freeze > requirements.txt 执行该命令会在项目根目录下生成一个 re ...