Comment mettre à jour bower.json avec les packages installés?

129

Dans mon projet, j'ai installé des bowercomposants sans option d' enregistrement . Maintenant, je voudrais mettre à jour bower.json?

Comment puis-je mettre à jour bower.json avec les packages installés?

Konga Raju
la source
2
L'absence d'une méthode en une seule étape pour y parvenir semble être une lacune. Puisqu'il y a une commande de désinstallation, il semble que courir bower installsans --saveserait toujours plus difficile et jamais plus facile.
Chris
1
Si vous n'avez rien dans votre bower.json, supprimez-le simplement et tapez bower initdans votre console.
Jean-Luc Barat

Réponses:

146

Listez simplement vos dépendances:

bower list

Ensuite, vous devez exécuter toutes les commandes d'installation avec le paramètre '--save' comme ceci:

bower install bootstrap --save

C'est un travail difficile, mais si vous avez mille dépendances, pourriez-vous créer un script pour automatiser la tâche.

Helder Robalo
la source
C'est une excellente réponse. Merci!
jessegavin
1
J'ai trouvé que cela posait problème avec seulement ~ 10 packages, car il n'est pas évident de savoir quels packages ont été téléchargés en tant que dépendances d'autres, ce qui a amené bower à demander les numéros de version. Même avec les bonnes réponses, le fichier bower.json résultant n'était pas tout à fait correct. J'ai travaillé avec la réponse de Sébastien, qui a fonctionné pour moi.
gb2d
Les dépendances qui n'ont pas été déclarées dans bower.json sont identifiées par une balise "superflue" sur la console.
otaviodecampos
135

Un petit truc si vous ne voulez pas écrire un script pour ça:

avant de faire quoi que ce soit renommez votre bower.json en bower2.json par exemple.

alors vous pouvez faire un:

$ bower init

(crée automatiquement un fichier bower.json).

notez que toutes les questions doivent être pré-remplies avec votre configuration actuelle.

Quand il vous demandera:

définir les composants actuellement installés comme dépendances? dis oui,

Vous avez maintenant toutes vos dépendances dans le nouveau fichier bower.json (et vous pouvez vérifier si tout va bien avec l'ancien bower2.json)

Sébastien Horin
la source
Quelle est l'option de registre qu'il mentionne lors de cette opération? J'avais supposé que cette commande ferait juste une chose locale. J'ai choisi de garder la mienne privée avec cette question pratique, mais j'aimerais savoir ce que cela signifie - existe-t-il une sorte de registre Internet. Je suis juste en train de penser que c'est ainsi que Bower pourrait faire une sorte d'installation npm.
atterri
2
@landed: ce serait le registre des packages bower ( bower.io/search ) HTH
POUR
Cela n'a pas fonctionné pour moi parce que je bower.jsonn'ai pas énuméré angular:'1.5.5'. C'est parce que je l'avais angular-animateinstallé et que cela dépend de angular 1.5.5bower a décidé de ne pas l'inclure angulardans le bower.json(étant donné qu'il l'installera de toute façon quand quelqu'un fait un bower installpour cela bower.json). Ce sera un problème si remove quelqu'un angular-animatede bower.jsondans ce cas , bowerne sera pas installé angulartrop depuis sa ne figure pas.
Akash
35

Une manière un peu ardue est d'exécuter bower list, de rechercher les packages étiquetés superflus et de les ajouter manuellement aux dépendances dans le bower.json.

S'il y a beaucoup de packages superflus , il peut être plus facile de contourner ce problème en exécutant bower initet en répondant Oui pour "définir les composants actuellement installés comme dépendances?". Cela prendra votre courant bower.json, le lira et en créera un nouveau en utilisant les informations de l'ancien. Donc, dans un cas idéal, vous aurez le même fichier avec des packages superflus ajoutés.

Avertissement : Premièrement, il peut y avoir quelque chose de perdu dans le processus (par exemple devDependecies). Deuxièmement, dans la dernière version de bower (v1.2.7), cela ne conservera pas les informations sur les paquets actuels! Je sens que c'est un bug. Cependant, vous pouvez enregistrer l'ancien fichier et le fusionner (manuellement) avec celui généré.

De plus, vous devriez demander une option ou quelque chose en ouvrant un problème de bower, car cela serait bien accueilli par de nombreux développeurs.

Robin Pokorny
la source
3
Remarque: bower 1.3.3 préserve les informations actuelles sur les paquets.
Bill Keller
27

Vous pouvez utiliser bower-check-updates (vous devez installer node.js sur votre machine):

bower-check-updates est un utilitaire qui ajuste automatiquement un bower.json avec la dernière version de toutes les dépendances

bower-check-updates - est un fork de npm-check-updates , donc tout est pareil mais met à jour bower.json, au lieu depackage.json

npm install -g bower-check-updates
bower-check-updates -u
bower install 

Cela s'installera bower-check-updatesglobalement, vous pourrez donc le lancer de n'importe où.

PS pour plus d'informations sur npm-check-updates, consultez cette rubrique

Sergueï Panfilov
la source
Peutbower install
Ámon Tamás
@ ÁmonTamás bower installn'a pas mis à jour bower.json.
Sergei Panfilov
5
L'auteur de bower-check-updates a déconseillé le projet au profit de npm-check-updates, qui a ajouté la prise en charge de la mise à jour de bower.json.
congusbongus
2

S'il n'y a pas autant de packages bower que vous avez installés, essayez d'écrire bower install [package_name] --save. Cela mettra simplement à jour votre fichier bower.json.

superjisan
la source
0

Après bower-check-updates -uvous devez exécuter bower installau lieu denpm install

Ámon Tamás
la source