Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

YNPM-sync命令实现原理 #372

Open
ShileiLiu opened this issue Dec 30, 2019 · 0 comments
Open

YNPM-sync命令实现原理 #372

ShileiLiu opened this issue Dec 30, 2019 · 0 comments

Comments

@ShileiLiu
Copy link

ShileiLiu commented Dec 30, 2019

先说一直出现的导致构建失败的安装异常
image
在有些时候,我们会锁定包的版本,图中锁定bee-datepicker为2.3.8版本,此时,ynpm install会去镜像服务器查找是否存在2.3.8版本,若存在,下载安装,不存在则会抛出如图的异常

ynpm镜像去npm镜像更新的理论时间为10分钟,实际上经常一个小时也无法更新到位,且无太好的解决方案,导致用户下载失败后经常无法使用,因为是包之间的相互依赖,无法退回原版本,导致本地开发受阻

最初提供的方案是ynpm sync时清除全部包的镜像缓存,此时ynpm会重新去npm下载,达到更新的目的。但此解决方案带来的问题极为严重,会导致很多不需更新的包被删掉缓存,下载速度变慢,影响其他流水线的执行,后果比较严重,同时镜像没有提供清楚单个包的缓存,只能清楚全部

现在提供新的方案,ynpm sync ,指定包名后不再删除缓存,而是直接去镜像端删除包的静态资源,删除后再进行安装,镜像服务器没有查询到该包的静态资源会自动去npm更新,达到同步的效果。

ynpm-tool给server端请求,经过解析,查询包的来源(私有包还是公有包)判断是否可删除静态资源,然后通过模拟请求的方式发送请求到镜像服务器,删除掉资源后返回请求结果

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant