Как узнать, какая версия пакета 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 ответов


вот команда grep для этого: grep "version\"\:" bower_components/thepackagename/.bower.json

кроме того, команда для просмотра версий всех компонентов bower для проекта-этот список может быть удобным артефактом CI: grep "version\"\:" bower_components/*/.bower.json enter image description here


лучший подход, который я нашел, который, кажется, работает для каждого пакета, с которым я столкнулся до сих пор, это:

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.