wake-up-neo.com

Wie finde ich heraus, welche Version eines Laubenpakets tatsächlich installiert ist?

Normalerweise ist ein bower.json-Datei gibt einige Abhängigkeiten an, diese werden jedoch normalerweise so ausgedrückt, dass sie die Verwendung einer Reihe von Versionen eines Laubenpakets ermöglichen (z. B. >=1.0, was etwas höheres als Version 1.0 bedeutet).

Ich habe einen automatisierten Prozess, der herausfinden muss, welche Version eines Bower-Pakets tatsächlich installiert auf diesem System ist.

Wie kann ich das programmgesteuert herausfinden (nur die Version selbst), idealerweise mit den Standard-Unix-Befehlszeilenprogrammen/dem Befehl bower?

bower info <thepackagename> does not show this - zeigt Informationen darüber an, was aktuell im Bower-Repository verfügbar ist (z. B. auch wenn ich bower info apackageIdonthaveinstalled Es wird weiterhin eine gültige JSON-Struktur mit einer Versionsnummer angezeigt.

cat bower_components/thepackagename/bower.json | node_modules/json/lib/json.js version funktioniert für einige Pakete (vorausgesetzt, das npm-Paket json ist installiert), aber nicht für alle (z. B. enthält das bower-Paket von jquery 2.2.0 keine bower.json).

27
Andrew Ferrier

Der beste Ansatz, den ich jetzt gefunden habe und der für jedes Paket zu funktionieren scheint, auf das ich bisher gestoßen bin, ist:

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

(Beachten Sie das Extra . in .bower.json).

Es scheint, dass Bower einige Metadaten über das installierte Paket in .bower.json Speichert, einschließlich der installierten Version.

Das Beste, was ich mir bisher ausgedacht habe, ist:

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

(Wenn zum Beispiel das Paket, an dem ich interessiert war, jquery war).

Das ist aus verschiedenen Gründen ziemlich hässlich:

  • Ich muss den Paketnamen wiederholen (obwohl dies wahrscheinlich mit einem besseren Perl-Skript verbessert werden könnte, das auch Zeilen filtert, bin ich nur faul).

  • bower list Ruft Informationen zu allen installierten Paketen ab, nicht nur zu dem, an dem ich interessiert bin - der Rest der Informationen wird verworfen.

  • bower list Erfordert anscheinend eine Internetverbindung, um die Registrierung zu überprüfen. Andernfalls schlägt die Registrierung fehl.

Würde mich interessieren, ob dies verbessert werden könnte, insbesondere der letzte Punkt.

6
Andrew Ferrier

Hier ist ein grep-Befehl, um das zu tun: grep "version\"\:" bower_components/thepackagename/.bower.json

Ein Befehl zum Anzeigen der Versionen aller Laubkomponenten für das Projekt - diese Liste kann ein nützliches CI-Artefakt sein: grep "version\"\:" bower_components/*/.bower.jsonenter image description here

26
Artem Vasiliev

Haben Sie jemals versucht "Bower-Liste --json = 0 --offline".

Hier werden alle Informationen zu Laubenpaketen aufgelistet.

7
yujohnnyzhou