web-dev-qa-db-fra.com

Comment désinstaller tous vos paquets bower?

Parfois, il est utile de reconstruire un site entier et de forcer Bower à réinstaller les nouvelles versions de tous les packages de bower.json.

Cependant, il ne semble pas y avoir de moyen de le faire:

Tentative n ° 1:

$ bower uninstall
bower not-installed 0

Non, cela ne fonctionne que sur chaque paquet, même si une "installation bower" propre utilise le fichier bower.json.

Tentative n ° 2:

$ bower install -f -l 0
$

Non, malgré '-f', cela ne fait absolument rien si les dépendances sont remplies.

Tentative n ° 3:

$ rm -r bower_components
$

! Ah victoire! ... attends, qu'est-ce que c'est?

rm: bower_components: No such file or directory

Oh zut, il y a un .bowrc dans ce projet qui définit le répertoire d'installation des éléments.

Ma terrible solution actuelle:

Exécutez un script personnalisé qui:

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

Cela fonctionne, je suppose, mais c'est assez ennuyant de devoir configurer à plusieurs reprises.

Est-ce que je manque quelque chose?

N'y a-t-il pas juste une simple commande bower pour supprimer les modules installés localement?

On dirait que les fonctionnalités vraiment basiques s’attendent à ce que bower soit désinstallé.

(Ce n'est pas vraiment une question très javascript, mais j'accepterai volontiers quelque chose qui s'accroche dans le module bower pour que cela se produise dans un script de noeud simple)

Le contexte

Edit: Si vous voulez de la "motivation" pour une telle tâche, voici ceci: Nous avons un serveur Jenkins qui construit nos projets et exécute des tests. Cependant, il échoue périodiquement sans raison évidente; enquêter, c’est presque toujours parce que jenkins utilise une copie précédente du référentiel avec juste un git-pull pour mettre à jour sa version la plus récente avant de construire et d’exécuter des tests; par conséquent, le répertoire précédent bower_components est présent et il regorge de copies en cache des différents composants.

Voici quelques exemples de choses qui sont # @ $ @ # $ 'd et nécessitent que bower soit exécuté à nouveau en tant qu’installation forcée:

1) Un idiot (> _> fitvids) supprime la version balisée précédente d’un projet.

2) Un projet est tombé de bower/a changé sa page github

3) Certains projets (> _> jquery) ont modifié la présentation des fichiers dans une révision de version non majeure.

Je me rends compte que la solution "correcte" à ce problème est la suivante: corrigez jenkins pour qu'il crée un nouveau répertoire temporaire pour chaque construction. ... mais ce n'est pas sous mon contrôle.

Donc, en tant qu'étape de construction, je dois automatiser un moyen de supprimer les composants de Bower et de les forcer à tous être réinstallés. soit en tant que tâche de grognement (partie de la construction) ou en tant qu'étape de construction de jenkins. Cependant, rappelez-vous de (3) ci-dessus, que nos projets utilisent .bowerrc, ce n'est donc pas aussi simple que de simplement supprimer un dossier.

Ce serait formidable si je pouvais désinstaller tous les composants existants de Bower en tant qu'étape de pré-construction pour que cela fonctionne.

Alors ... revenons à la question: est-ce que cela peut être fait avec bower?

68
Doug

Réponse mise à jour

Si vous essayez de mettre à jour tous vos paquets, utilisez

$ bower update

Réponse originale

Accédez au fichier bower.json et supprimez tous les composants, ou bibliothèques, que vous souhaitez désinstaller de devDependencies.

Après avoir supprimé ceux que vous souhaitez supprimer, exécutez -

$ bower Prune
  1. commencer avec -

    "devDependencies": {
        "angular": "~1.2.15",
        "angular-ui-router": "~0.2.10",
        "moment": "~2.5.1"
    }
    
  2. remove angular références du fichier -

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

    $ bower Prune
    
  4. regardez vos angular angulaires se désinstaller

148
VtoCorleone

que diriez-vous

  1. éditer le bower.json
  2. 'rm -Rf bower_components/*'
  3. bower installer

J'essayais de passer à polymer 0.2.4 à partir de 0.2.3. Je n'arrive pas à trouver un moyen rapide de désinstaller un ensemble de dépendances. Je viens donc de les supprimer manuellement. sous bower_components. Mais pour une raison quelconque, bower a gardé en mémoire le fait que j'avais 0.2.3 événement installé avec bower.json modifié. Un 'rm -Rf bower_component/*' semble faire l'affaire.

10
user3206144

En fait, je fais quelque chose d'un peu délicat mais cela fonctionne pour moi:

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

Désinstallation des packages

Pour supprimer un package, vous pouvez utiliser la commande de désinstallation suivie du nom du package que vous souhaitez supprimer.

désinstaller bower

Il est possible de supprimer plusieurs paquets à la fois en listant leurs noms.

bower désinstaller jquery modernizr sass-bootstrap

5
Nuno Sarmento

J'utilise nombom pour le faire (en prime, il réinstalle également vos paquets npm de toutes pièces):

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

0
user2926055

Je ne sais pas quels outils de construction vous utilisez, mais s'il inclut Grunt avec grunt-bowercopy , vous pouvez utiliser l'option clean. Il supprime le dossier bower_components (ou tout ce que vous avez configuré pour l'utiliser) après avoir copié les fichiers requis.

Idéalement, je préférerais quelque chose qui ne nécessite pas de télécharger à nouveau toutes les dépendances avec chaque version, mais uniquement celles dans lesquelles une nouvelle installation trouverait une version plus récente.

Je cherche une meilleure solution à cela aussi, donc je mettrai à jour si j'en trouve une.

0
The DIMM Reaper

Voici ce qui a finalement fonctionné pour moi via l'invite cmd de Windows:

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

Adapter réponse de Jumar Polanco pour l'utiliser dans Powershell, il est possible de désinstaller par programme les composants de Bower de la manière suivante:

Dans l'interface Powershell, accédez à l'emplacement où se trouvent bower.json et le dossier bower_components. Est généralement le dossier racine de l'application.

Ensuite, vous pouvez exécuter:

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

Selon les dépendances des packages, il peut être nécessaire de prêter une attention particulière au processus, car certaines invites nécessitant une entrée supplémentaire (O/n) pour continuer le processus peuvent survenir (telles que des conflits de dépendances).

0
j4v1