web-dev-qa-db-fra.com

Comment savoir quelle version d'un package bower est réellement installée?

Normalement, un bower.json Le fichier spécifie certaines dépendances, mais celles-ci sont généralement exprimées de manière à permettre l'utilisation d'une gamme de versions d'un package Bower (par exemple >=1.0, ce qui signifie plus que la version 1.0).

J'ai un processus automatisé qui doit trouver quelle version d'un paquet Bower est actuellement installée sur ce système en ce moment.

Comment puis-je trouver cela par programme (juste la version elle-même), idéalement en utilisant les outils de ligne de commande Unix standard/la commande bower?

bower info <thepackagename> ne pas affiche ceci - il affiche des informations sur ce qui est actuellement disponible à partir du référentiel bower (par exemple, même si je le fais bower info apackageIdonthaveinstalled il affichera toujours une structure JSON valide contenant un numéro de version).

cat bower_components/thepackagename/bower.json | node_modules/json/lib/json.js version fonctionne pour certains packages (en supposant que le package npm json est installé), mais pas pour tous (par exemple, le package bower de jquery 2.2.0 ne contient pas de bower.json).

27
Andrew Ferrier

La meilleure approche que j'ai trouvée, qui semble fonctionner pour chaque package que j'ai rencontré jusqu'à présent, est:

cat bower_components/thepackagename/.bower.json | node_modules/json/lib/json.js version

(notez le supplément . dans .bower.json).

Il semblerait que bower stocke des métadonnées sur le package installé dans .bower.json, et cela inclut la version installée.

Le meilleur que j'ai trouvé jusqu'à présent est:

bower list | grep jquery | Perl -pe 's/.*jquery#(.*?) .*$/$1/'

(si, par exemple, le package qui m'intéressait était jquery).

C'est assez moche pour diverses raisons:

  • Je dois répéter le nom du paquet (bien que cela puisse probablement être amélioré avec un meilleur script Perl qui filtre aussi les lignes, je suis juste paresseux).

  • bower list obtient des informations sur tous les packages installés, pas seulement celui qui m'intéresse - le reste des informations est supprimé.

  • bower list semble nécessiter une connectivité Internet pour vérifier le registre, sinon il échoue.

Serait intéressé de voir si cela pourrait être amélioré, en particulier le dernier point.

6
Andrew Ferrier

Voici une commande grep pour le faire: grep "version\"\:" bower_components/thepackagename/.bower.json

En outre, une commande pour voir les versions de tous les composants de bower pour le projet - cette liste peut être un artefact CI pratique: grep "version\"\:" bower_components/*/.bower.jsonenter image description here

26
Artem Vasiliev

Avez-vous déjà essayé "bower list --json = 0 - offline".

Il répertorierait toutes les informations sur les packages Bower.

7
yujohnnyzhou