YARN构建--解决cypress下载慢问题

 

背景

注意:

  1.      此方案仅适合已经自行搭建私有仓库的用户使用

  2.      如非必要,尽可能使用软件开发云或其他服务提供的镜像站,避免此类特殊处理(会导致仓库维护成本增加)

场景描述

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   时,速度比较慢,会导致构建卡顿甚至超时失败

问题分析

从”场景描述“中下载步骤可以看出:

  1. 国内访问cypress.io慢,需要替换其他地址,cypress.tgz已提供了环境变量 (CYPRESS_DOWNLOAD_MIRROR),可以更换

  2. 下载地址 https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64  中,可以在构建过程中改变的只有 https://download.cypress.io部分,余下内容为固定值无法改变

解决方案

  1. 手工下载cypress.zip文件,并上传到私有仓库

  2. 上传到私有仓库时,指定文件路径为/desktop/3.1.4,与cypress.tgz脚本中定义的保持一致(版本号3.1.4以实际使用为准)

  3. 在构建命令中设置环境变量,将https://download.cypress.io替换为私有仓库地址

操作步骤

详细操作步骤可参考 https://help.sonatype.com/repomanager3/raw-repositories-and-maven-sites#RawRepositoriesandMavenSites-CreatingaHostedRawRepository 

此处提供简易操作步骤如下:

1. 从官网下载cypress.zip文件

https://download.cypress.io/desktop/3.1.4?platform=linux&arch=x64 

2. 在Nexus3创建文件系统,新建raw(hosted)仓库

image.png

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/"

原文地址:https://www.cnblogs.com/mouseleo/p/11925437.html