我在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,但似乎没有很多流量]