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).
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.
Avez-vous déjà essayé "bower list --json = 0 - offline".
Il répertorierait toutes les informations sur les packages Bower.