Как узнать, какая версия пакета bower фактически установлена?

Обычно файл bower.json задает некоторые зависимости, но они обычно выражаются так, что они позволяют использовать ряд версий пакета 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), но не все (например, пакет jquery 2.2.0 bower не содержит bower.json).

Ответы

Ответ 1

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

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

(обратите внимание на дополнительный . в .bower.json).

Похоже, что bower хранит некоторые метаданные об установленном пакете в .bower.json и включает в себя установленную версию.

Самое лучшее, что я придумал до сих пор:

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

(если, например, пакет, который меня интересовал, был jquery).

Это довольно уродливо по целому ряду причин:

  • Мне нужно повторить имя пакета (хотя это, вероятно, возможно было бы улучшено с лучшим Perl script, который тоже фильтрует строки, я просто ленив).

  • bower list получает информацию обо всех установленных пакетах, а не только о том, что мне интересно - остальная часть информации отбрасывается.

  • bower list похоже, требует подключения к Интернету для проверки реестра, в противном случае он не работает.

Было бы интересно узнать, можно ли улучшить это, особенно последнее. Забастовкa >

Ответ 2

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

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

Ответ 3

Вы когда-нибудь пробовали "bower list --json = 0 --offline".

Он перечислит всю информацию о пакетах.