你如何卸载所有的凉亭包?

时间:2014-04-08 04:10:06

标签: javascript bower

有时,重建整个网站并迫使bower重新安装bower.json中所有软件包的新版本非常有用。

然而,似乎没有办法做到这一点:

尝试#1:

$ bower uninstall
bower not-installed 0

不,这只能在逐个包装的基础上运行,即使是一个干净的凉亭安装'使用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服务器来构建我们的项目并运行测试。然而,由于没有明显的原因,它会定期失败;调查,它几乎总是因为jenkins在构建和运行测试之前只使用git-pull来使用存储库的先前副本来更新到最新版本;结果,之前的bower_components目录就在那里,它充满了各种组件的缓存副本。

以下是#@ $ @#$' d的一些示例,并要求将bower作为强制安装再次运行:

1)一些白痴(> _> fitvids)删除项目的先前标记版本。

2)有些项目从凉亭下移/移动了它的github页面

3)某个项目(> _> jquery)已经改变了在非主要版本修订版中布置文件的方式。

我意识到'正确'解决这个问题的方法是:修复jenkins,以便为每个构建创建一个新的临时目录。 ......但那不在我的掌控之中。

因此,作为构建步骤,我需要自动删除bower组件的方法并强制它们全部重新安装;无论是作为一项艰巨的任务(构建的一部分)还是一个jenkins构建步骤。但是,请记住上面的(3),我们的项目使用.bowerrc,所以它不像简单地删除文件夹那么简单。

如果我可以卸载所有现有的bower组件作为预构建步骤来实现这一点,那就太棒了。

所以...回到问题:这可以用凉亭完成吗?

8 个答案:

答案 0 :(得分:148)

更新了答案

如果您尝试更新所有套餐,请使用

$ bower update

原始答案

转到bower.json文件,删除要从devDependencies卸载的所有组件或库。

删除了想要删除的内容后,执行 -

$ bower prune
  1. 以 -

    开头
    "devDependencies": {
        "angular": "~1.2.15",
        "angular-ui-router": "~0.2.10",
        "moment": "~2.5.1"
    }
    
  2. 从文件中删除角度引用 -

    "devDependencies": {
        "moment": "~2.5.1"
    }
    
  3. 执行

    $ bower prune
    
  4. 注意卸载角度依赖项

答案 1 :(得分:10)

怎么样

  1. 编辑bower.json
  2. ' rm -Rf bower_components / *'
  3. bower install
  4. 我试图从0.2.3升级到聚合物0.2.4。我似乎无法找到一种快速卸载一组依赖项的方法。所以我只是在bower_components下手动删除了那些聚合物* dir。但由于某种原因,凉亭一直记得我在修改了bower.json的情况下安装了0.2.3事件。 A' rm -Rf bower_component / *'似乎在做伎俩。

答案 2 :(得分:6)

实际上我做了一些有点棘手的事情,但它对我有用:

  1. for package in $(ls your_bower_components_folder); do bower uninstall "$package"; done;
  2. bower install

答案 3 :(得分:5)

卸载软件包

要删除程序包,可以使用uninstall命令,后跟要删除的程序包的名称。

bower uninstall

可以通过列出软件包名称一次删除多个软件包。

bower uninstall jquery modernizr sass-bootstrap

答案 4 :(得分:0)

调整Jumar Polanco's answer以在Powershell中使用它,可以通过以下方式以编程方式卸载bower组件:

在Powershell界面中,导航到bower.json和bower_components文件夹所在的位置。通常是根应用程序文件夹。

然后你可以运行:

foreach($package in ls bower_components){bower uninstall $package}

根据包的依赖关系,可能需要特别注意该过程,因为可能会出现一些需要额外输入(Y / n)以继续该过程的提示(例如依赖冲突)。

答案 5 :(得分:0)

我不知道您使用的构建工具,但如果它包含grunt-bowercopy的Grunt,您可以使用clean选项。它会在复制出所需文件后删除bower_components文件夹(或您已配置使用的任何文件夹)。

理想情况下,我更喜欢某些并不需要我重新下载每个版本的所有依赖项的内容,但只是那些进行全新安装的内容会找到更新的版本。

我也在寻找更好的解决方案,所以如果找到的话,我会更新。

答案 6 :(得分:0)

我一直在使用nombom来做这件事(作为奖励,它还会从头开始重新安装你的npm包):

https://www.npmjs.com/package/nombom

答案 7 :(得分:0)

这是最终通过Windows cmd提示符为我工作的内容:

forfiles /p .\bower_components /c "cmd /c cd .. && bower uninstall @fname"
相关问题