2016-02-12 22 views
21

Normalnie plik bower.json określa pewne zależności, ale są one zazwyczaj wyrażane w taki sposób, że pozwalają na użycie szeregu wersji pakietu altany (np. >=1.0, co oznacza cokolwiek wyższego niż wersja 1.0).Jak mogę się dowiedzieć, która wersja pakietu altankowego jest rzeczywiście zainstalowana?

Mam zautomatyzowany proces, który musi teraz sprawdzić, która wersja pakietu altankowego jest aktualnie zainstalowana w tym systemie.

Jak mogę znaleźć to programowo (tylko sama wersja), najlepiej przy użyciu standardowych narzędzi wiersza poleceń systemu Unix/polecenia altana?

bower info <thepackagename> robi nie pokazać to - pokazuje informacje na temat tego, co jest obecnie dostępny z repozytorium altana (na przykład, nawet jeśli robię bower info apackageIdonthaveinstalled będzie nadal wykazują prawidłową strukturę JSON zawierający numer wersji).

działa dla niektórych pakietów (zakładając, że jest zainstalowany pakiet NPM json), ale nie wszystkie (np. Pakiet altanki jquery 2.2.0 nie zawiera bower.json).

Odpowiedz

6

Najlepszym rozwiązaniem Mam teraz znaleźć, który wydaje się działać na każdym opakowaniu Natknąłem tak daleko, to:

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

(zwróć uwagę na dodatkową . w .bower.json).

Wygląda na to, że altanka przechowuje niektóre metadane dotyczące zainstalowanego pakietu w wersji .bower.json, która obejmuje zainstalowaną wersję.

Najlepszym Mam wymyślić tak daleko jest:

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

(jeśli, na przykład, pakiet byłem zainteresowany był jquery).

To dość brzydki z różnych powodów:

  • muszę powtórzyć nazwę pakietu (choć może to być prawdopodobnie poprawił z lepszym skrypt Perl, który filtruje linie też, ja po prostu leniwy).

  • bower list dostaje informacje o wszystkich zainstalowanych pakietach, nie tylko tym, który mnie interesuje - pozostałe informacje są odrzucane.

  • bower list wydaje się wymagać połączenia z Internetem, aby sprawdzić rejestr, inaczej nie.

Byłby zainteresowany, aby sprawdzić, czy można to poprawić, szczególnie ostatni punkt.

23

Oto polecenia grep, aby to zrobić: grep "version\"\:" bower_components/thepackagename/.bower.json

Również polecenie, aby zobaczyć wersje wszystkich składników Bower dla projektu - lista ta może być przydatna CI artefakt: grep "version\"\:" bower_components/*/.bower.json enter image description here

+1

Jak wspomniano w pytaniu, nie działa to w przypadku pakietów, które nie zawierają 'bower.json'. –

+1

Uwaga na dodatkowe. in .bower.json;) Tak więc to polecenie jest zasadniczo takie samo, jakiego używasz, z tym wyjątkiem, że nie jest zależne od pakietu 'json' i pokazuje wersje * wszystkich * zależności bowerów dla bieżącego pakietu. –

+1

To działa o wiele lepiej niż przyjęta odpowiedź. – Aron

5

Czy kiedykolwiek próbowałeś "listy bowerów - json = 0 - offline".

Zostanie wyświetlona lista wszystkich informacji o pakietach altan.

+1

'altanka lista' była dla mnie właściwą odpowiedzią –