有时,重建整个站点并强制 Bower 重新安装 Bower.json 中所有软件包的新版本很有用。
但是,似乎没有任何方法可以做到这一点:
尝试#1:
$ bower uninstall
bower not-installed 0
不,这只能在逐个包的基础上起作用,即使干净的“bower 安装”使用了 Bower.json。
尝试#2:
$ bower install -f -l 0
$
不,尽管有“-f”,但如果满足依赖关系,这绝对没有任何作用。
尝试#3:
$ rm -r bower_components
$
!啊胜利! ...等等,这是什么?
rm: bower_components: No such file or directory
哦,该死,这个项目中有一个 .bowrc 设置安装目录。
我目前糟糕的解决方案:
运行自定义脚本:
- Parse .bowerrc if one exists
- Load the directory if one is specified in the json block
- If the directory currently exists...
- ...recursively delete the directory.
我想它可以工作,但是必须重复设置非常烦人。
我错过了什么吗?
难道不是只有一个简单的 Bower 命令来删除本地安装的模块吗?
看起来像是我希望 Bower uninstall 能够完成的非常基本的功能。
(这实际上并不是一个非常 JavaScript 的问题,但我很乐意接受一些以某种方式挂接到 Bower 模块中的东西,以便在一个简单的节点脚本中实现这一点)
Context
编辑:如果您想要此类任务的“动力”,那就是:我们有一个 jenkins 服务器来构建我们的项目并运行测试。然而,它有时会无缘无故地失败;调查了一下,差不多了always因为 jenkins 使用存储库的先前副本,在构建和运行测试之前仅通过 git-pull 更新到最新版本;结果,之前的 Bower_components 目录就在那里,并且充满了各种组件的缓存副本。
这里有一些 #@$@#$ 的例子,并且需要 Bower 作为强制安装再次运行:
1) 某个白痴 (>_> fitvids) 删除了项目的先前标记版本。
2) 一些项目已经从 Bower 中删除/移动了它的 github 页面
3)某些项目(>_> jquery)在非主要版本修订中更改了文件的布局方式。
我意识到这个问题的“正确”解决方案是:修复 jenkins,以便它为每个构建创建一个新的临时目录。 ……但这不是我能控制的。
因此,作为构建步骤,我需要自动删除 Bower 组件并强制重新安装它们;作为 grunt 任务(构建的一部分)或 jenkins 构建步骤。但是,请记住上面的 (3),我们的项目使用 .bowerrc,因此它不像简单删除文件夹那么简单。
如果我可以卸载所有现有的 Bower 组件作为预构建步骤来完成这项工作,那就太好了。
那么...回到问题:这可以用 Bower 来完成吗?