Подтвердить что ты не робот

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

4b9b3361

Ответ 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".

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