webentwicklung-frage-antwort-db.com.de

Wie deinstallieren Sie alle Ihre Laubenpakete?

Manchmal ist es nützlich, eine ganze Site neu zu erstellen und bower zu zwingen, neue Versionen aller Pakete in bower.json neu zu installieren.

Es scheint jedoch keine Möglichkeit zu geben, dies zu tun:

Versuch 1:

$ bower uninstall
bower not-installed 0

Nein, das funktioniert nur Paket für Paket, obwohl bei einer sauberen "Bower-Installation" bower.json verwendet wird.

Versuch 2:

$ bower install -f -l 0
$

Nein, trotz '-f' tut dies absolut nichts, wenn die Abhängigkeiten erfüllt sind.

Versuch 3:

$ rm -r bower_components
$

! Ah Sieg! ... warte, was ist das?

rm: bower_components: No such file or directory

Oh verdammt, es gibt eine .bowrc in diesem Projekt, die das Verzeichnis festlegt, in das die Dinge installiert werden sollen.

Meine derzeitige schreckliche Lösung:

Führen Sie ein benutzerdefiniertes Skript aus, das:

- 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.

Es funktioniert, nehme ich an, aber es ist ziemlich ärgerlich, wiederholt einrichten zu müssen.

Vermisse ich etwas?

Gibt es nicht nur einen einfachen Befehl zum Löschen der lokal installierten Module?

Scheint wie wirklich grundlegende Funktionalität, die ich Bower-Deinstallation erwarten würde, um zu tun.

(Dies ist eigentlich keine sehr gute Javascript-Frage, aber ich akzeptiere gerne etwas, das sich in das Bower-Modul einfügt, um dies in einem einfachen Knotenskript zu ermöglichen.)

Kontext

Bearbeiten: Wenn Sie "Motivation" für eine solche Aufgabe möchten, ist dies: Wir haben einen Jenkins-Server, der unsere Projekte erstellt und Tests ausführt. Es schlägt jedoch in regelmäßigen Abständen ohne ersichtlichen Grund fehl. Nachforschungen führen fast zu immer, da Jenkins eine vorherige Kopie des Repositorys mit nur einem Klick verwendet, um auf die neueste Version zu aktualisieren, bevor Tests erstellt und ausgeführt werden. Infolgedessen ist das vorherige Verzeichnis bower_components vorhanden und es enthält zahlreiche zwischengespeicherte Kopien der verschiedenen Komponenten.

Hier ein paar Beispiele für Dinge, bei denen # @ $ @ # $ erforderlich ist, dass bower erneut als Zwangsinstallation ausgeführt wird:

1) Ein Idiot (> _> fitvids) löscht die vorherige getaggte Version eines Projekts.

2) Ein Projekt ist von der Laube gefallen/hat seine Github-Seite verschoben

3) Einige Projekte (> _> jquery) haben die Anordnung der Dateien in einer nicht größeren Versionsrevision geändert.

Mir ist klar, dass die 'richtige' Lösung für dieses Problem ist: Fix Jenkins, so dass ein neues temporäres Verzeichnis für jeden Build erstellt wird. ... aber das liegt nicht in meiner Hand.

Daher muss ich als Build-Schritt eine Methode automatisieren, um die Laubbaumkomponenten zu löschen und zu erzwingen, dass sie alle neu installiert werden. entweder als Grunt-Aufgabe (Teil des Builds) oder als Jenkins-Build-Schritt. Denken Sie jedoch an (3) oben, dass unsere Projekte .bowerrc verwenden, sodass es nicht so einfach ist, einen Ordner einfach zu löschen.

Es wäre großartig, wenn ich alle vorhandenen Laubkomponenten als vorbereitenden Schritt deinstallieren könnte, damit dies funktioniert.

Also ... zurück zur Frage: Kann man das mit der Laube machen?

68
Doug

aktualisierte Antwort

Wenn Sie versuchen, alle Ihre Pakete zu aktualisieren, verwenden Sie

$ bower update

rsprüngliche Antwort

Gehen Sie zu Ihrer bower.json-Datei und entfernen Sie alle Komponenten oder Bibliotheken, die Sie von devDependencies deinstallieren möchten.

Nachdem Sie die Dateien entfernt haben, die Sie entfernen möchten, führen Sie Folgendes aus:

$ bower Prune
  1. beginnen mit -

    "devDependencies": {
        "angular": "~1.2.15",
        "angular-ui-router": "~0.2.10",
        "moment": "~2.5.1"
    }
    
  2. entferne angular Referenzen aus Datei -

    "devDependencies": {
        "moment": "~2.5.1"
    }
    
  3. execute

    $ bower Prune
    
  4. beobachte, wie deine angular Abhängigkeiten deinstalliert werden

148
VtoCorleone

wie wäre es mit

  1. bearbeite die bower.json
  2. 'rm -Rf bower_components/*'
  3. laube installieren

Ich habe versucht, von 0.2.3 auf polymer 0.2.4 zu aktualisieren. Ich kann anscheinend keine schnelle Möglichkeit finden, eine Reihe von Abhängigkeiten zu deinstallieren. Deshalb habe ich diese polymer * dir nur manuell entfernt Aber aus irgendeinem Grund erinnerte sich Bower immer wieder, dass ich das Ereignis 0.2.3 installiert hatte und bower.json modifiziert hatte. Ein 'rm -Rf bower_component/*' scheint die Tricks zu tun.

10
user3206144

Eigentlich mache ich etwas kniffliges, aber es funktioniert bei mir:

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

Pakete deinstallieren

Zum Entfernen eines Pakets können Sie den Befehl uninstall gefolgt vom Namen des Pakets verwenden, das Sie entfernen möchten.

laube deinstallieren

Sie können mehrere Pakete gleichzeitig entfernen, indem Sie die Paketnamen auflisten.

bower deinstallieren jquery modernizr sass-bootstrap

5
Nuno Sarmento

Ich habe nombom verwendet, um dies zu tun (als Bonus werden auch Ihre npm-Pakete von Grund auf neu installiert):

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

0
user2926055

Ich weiß nicht, welche Build-Tools Sie verwenden, aber wenn es Grunt mit grunt-bowercopy enthält, können Sie die Option clean verwenden. Der Ordner "bower_components" (oder was auch immer Sie konfiguriert haben) wird entfernt, nachdem die erforderlichen Dateien kopiert wurden.

Idealerweise würde ich etwas vorziehen, bei dem ich nicht alle Abhängigkeiten bei jedem Build erneut herunterladen musste, sondern nur diejenigen, bei denen eine Neuinstallation eine neuere Version finden würde.

Ich suche auch nach einer besseren Lösung, daher aktualisiere ich, wenn ich eine finde.

0
The DIMM Reaper

Dies ist, was für mich über Windows Cmd Prompt funktioniert hat:

forfiles /p .\bower_components /c "cmd /c cd .. && bower uninstall @fname"
0
GaTechThomas

Wenn Sie die Antwort von Jumar Polanco anpassen, um es in Powershell zu verwenden, können Sie die Laubkomponenten folgendermaßen programmgesteuert deinstallieren:

Navigieren Sie in der Powershell-Oberfläche zu dem Speicherort, an dem sich bower.json und der Ordner bower_components befinden. Normalerweise ist dies der Stamm-App-Ordner.

Dann kannst du laufen:

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

Abhängig von den Paketabhängigkeiten muss der Prozess möglicherweise besonders beachtet werden, da einige Eingabeaufforderungen, die zusätzliche Eingaben (J/N) erfordern, um den Prozess fortzusetzen, möglicherweise auftreten (z. B. Abhängigkeitskonflikte).

0
j4v1