有时重建整个站点并强制 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 卸载完成的非常基本的功能。
(这实际上不是一个非常 javascript 的问题,但我很乐意接受以某种方式挂接到 bower 模块的东西,以在简单的节点脚本中实现这一点)
上下文
编辑:如果你想为这样的任务找到“动力”,那就是:我们有一个 jenkins 服务器来构建我们的项目并运行测试。但是,它会周期性地无缘无故地失败;调查,这几乎是 always 因为 jenkins 在构建和运行测试之前只使用 git-pull 更新到最新版本的存储库的先前副本;结果,以前的 bower_components 目录就在那里,里面全是各种组件的缓存副本。
这里有一些例子是#@$@#$'d 并且要求 bower 作为强制安装再次运行:
1) 一些白痴 (>_> fitvids) 删除了项目的先前标记版本。
2) 一些项目已经离开 bower/移动了它的 github 页面
3) 一些项目 (>_> jquery) 改变了文件在非主要版本修订版中的布局方式。
我意识到这个问题的“正确”解决方案是:修复 jenkins 以便它为每个构建创建一个新的临时目录。 ...但这不在我的控制范围内。
因此,作为构建步骤,我需要自动删除 Bower 组件并强制重新安装它们;作为 grunt 任务(构建的一部分)或 jenkins 构建步骤。但是,请记住上面的(3),我们的项目使用.bowerrc,所以它不是简单地删除文件夹那么简单。
如果我可以卸载所有现有的 Bower 组件作为预构建步骤来完成这项工作,那就太好了。
所以...回到问题:这可以用 Bower 完成吗?
最佳答案
更新的答案
如果您尝试更新所有包,请使用
$ bower update
原始答案
转到您的 bower.json 文件并删除您要从 devDependencies 中卸载的所有组件或库。
在你删除了你想要的那些之后,执行 -
$ bower prune
开始于 -
"devDependencies": { "angular": "~1.2.15", "angular-ui-router": "~0.2.10", "moment": "~2.5.1" }
从文件中删除 Angular 引用 -
"devDependencies": { "moment": "~2.5.1" }
执行
$ bower prune
观察您的 Angular 依赖项被卸载
关于javascript - 你如何卸载你所有的 bower 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22927370/