Как узнать, какая версия пакета 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".
Он перечислит всю информацию о пакетах.