Как узнать, какая версия пакета bower фактически установлена?
обычно a bower.json
file указывает некоторые зависимости, но они обычно выражаются так, что они позволяют использовать ряд версий пакета bower (например,>=1.0
, что означает, что выше версии 1.0).
у меня есть автоматизированный процесс, который должен найти, какая версия пакета bower установлена на этой системе прямо сейчас.
как я могу узнать это программно (только версия), в идеале, используя стандартные инструменты командной строки Unix / команда bower?
bower info <thepackagename>
тут не показать это-он показывает информацию о том, что в настоящее время доступно из репозитория bower (например, даже если я делаю bower info apackageIdonthaveinstalled
он по-прежнему будет показывать допустимую структуру JSON, содержащую номер версии).
cat bower_components/thepackagename/bower.json | node_modules/json/lib/json.js version
работает для некоторых пакетов (при условии, что пакет npm json
установлен), но не все (например, пакет bower jQuery 2.2.0 не содержит bower.формат JSON.)
3 ответов
лучший подход, который я нашел, который, кажется, работает для каждого пакета, с которым я столкнулся до сих пор, это:
cat bower_components/thepackagename/.bower.json | node_modules/json/lib/json.js version
(обратите внимание на extra .
на .bower.json
).
похоже, что bower хранит некоторые метаданные об установленном пакете в .bower.json
, и это включает установленную версию.
Лучшее, что я придумал до сих пор, это:
bower list | grep jquery | perl -pe 's/.*jquery#(.*?) .*$//'
(если, например, пакет, который меня интересовал, был jquery
).
это довольно уродливо по целому ряду причин:
Я должен повторить имя пакета (хотя это, вероятно, может быть улучшена с лучшим скриптом Perl, который также фильтрует строки, я просто ленив).
bower list
получает информацию обо всех установленных пакетах, а не только о том, что меня интересует - остальная информация отбрасывается.bower list
кажется, требуется интернет подключение для проверки реестра, в противном случае это не удается.
было бы интересно посмотреть, можно ли это улучшить, особенно последний пункт.
вы когда-нибудь пробовали "Bower list --json=0 --offline".
Он будет перечислять всю информацию о пакетах bower.