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:
$ 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.
$ bower install -f -l 0
$
Non, malgré '-f', cela ne fait absolument rien si les dépendances sont remplies.
$ 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.
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)
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?
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
commencer avec -
"devDependencies": {
"angular": "~1.2.15",
"angular-ui-router": "~0.2.10",
"moment": "~2.5.1"
}
remove angular références du fichier -
"devDependencies": {
"moment": "~2.5.1"
}
execute
$ bower Prune
regardez vos angular angulaires se désinstaller
que diriez-vous
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.
En fait, je fais quelque chose d'un peu délicat mais cela fonctionne pour moi:
for package in $(ls your_bower_components_folder); do bower uninstall "$package"; done;
bower install
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
J'utilise nombom
pour le faire (en prime, il réinstalle également vos paquets npm de toutes pièces):
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.
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"
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).