bower从缓存中提取zip文件,即使它发现文件过时

时间:2015-10-14 16:47:36

标签: caching bower artifactory

我在bower.json中引用Zip文件时遇到问题,并且在Zip文件发生更改时让bower更新已安装的软件包。

我的公司在.bowerrc

中使用这样的本地凉亭注册表
"registry": "http://artifactory.mycompany.com/artifactory/api/bower/bower-virtual"

我的bower.json文件有一个依赖项,如:

"mypackage": "http://mycompany.com:8080/artifactory/bower-local/mypackage-1.7.1.zip"

其中zip文件是从github下载的软件包的修改版本(出于某些法律原因,我们必须进行更改,并且还没有接受拉取请求。)

我做了一个“凉亭安装 mypackage”,一切都很棒。

现在,我对zip文件进行了更改。我无法更改版本号或文件名;我只是在Zip文件中的JS文件中更改一行代码。期望是凉亭可以使用电子标签来判断zip文件是否已经改变。

我输入“bower 卸载 mypackage”然后“bower 安装 mypackage”,希望获得新代码。但是,这会从(陈旧)缓存中获取,而不是抓住新代码即使bower检测到陈旧的zip文件(使用电子标签)并声称要更新缓存。

然而,当我检查bower_components时,它与以前的代码相同。这就是我所看到的:

$ bower uninstall mypackage
bower uninstall     mypackage

$ bower install mypackage
bower mypackage#*                cached http://mycompany.com:8080/artifactory/bower-local/mypackage-1.7.1.zip#e-tag:2af72bda2b
bower mypackage#*              validate e-tag:2af72bda2b against http://mycompany.com:8080/artifactory/bower-local/mypackage-1.7.1.zip#*
bower mypackage#*                   new version for http://mycompany.com:8080/artifactory/bower-local/mypackage-1.7.1.zip#*
bower mypackage#*               resolve http://mycompany.com:8080/artifactory/bower-local/mypackage-1.7.1.zip#*
bower mypackage#*              download http://mycompany.com:8080/artifactory/bower-local/mypackage-1.7.1.zip
bower mypackage#*               extract mypackage-1.7.1.zip
bower mypackage#*              resolved http://mycompany.com:8080/artifactory/bower-local/mypackage-1.7.1.zip#e-tag:85ddfe2ee0
bower mypackage#*               install mypackage#e-tag:85ddfe2ee0

正如您所看到的,有一个缓存未命中,虽然检测到“新版本”,但旧版本仍保留在缓存中,并且我安装的软件包继续使用旧代码。

当我“bower 更新我的包裹”时,会发生同样的事情。

唯一的解决方法是在每次安装之前执行“bower 缓存清理 mypackage”,以防Zip文件更新。

我意识到还有其他方法来构建这个开发环境,而不通过http引用Zip文件。但这就是我们所拥有的,并且bower支持Zip文件 - 当它检测到一个已经改变时,它不会在缓存中替换它们。

这只是一个bower bug还是我做错了什么?

[最初发布于https://github.com/bower/bower/issues/1945,但似乎没有很多流量]

0 个答案:

没有答案