Как обновить bower.json с установленными пакетами?

129

В моем проекте я установил bowerкомпоненты без возможности сохранения . Теперь я хотел бы обновить bower.json?

Как я могу обновить bower.json с установленными пакетами?

Конга Раджу
источник
2
Отсутствие одношагового способа сделать это кажется серьезным недостатком. Поскольку есть команда удаления, кажется, что работать bower installбез нее --saveвсегда будет труднее и никогда не будет проще.
Крис
1
Если в вашем bower.json ничего нет, просто удалите его и введите bower initв консоли.
Жан-Люк Барат

Ответы:

146

Просто перечислите свои зависимости:

bower list

Затем вы должны запустить всю команду установки с параметром '--save' следующим образом:

bower install bootstrap --save

Это тяжелая работа, но если у вас есть тысяча зависимостей, не могли бы вы создать сценарий для автоматизации задачи.

Хелдер Робало
источник
Это отличный ответ. Спасибо!
jessegavin
1
Я обнаружил, что это проблематично всего с ~ 10 пакетами, поскольку не очевидно, какие пакеты были загружены как зависимости от других, из-за чего bower запрашивала номера версий. Даже при правильных ответах полученный файл bower.json был не совсем правильным. Я работал с ответом Себастьяна, который сработал для меня.
gb2d 02
Зависимости, которые не были объявлены в bower.json, идентифицируются "посторонним" тегом на консоли.
otaviodecampos
135

Небольшая хитрость, если вы не хотите писать для этого скрипт:

прежде чем что-либо делать, переименуйте, например, ваш bower.json в bower2.json.

тогда вы можете сделать:

$ bower init

(автоматически создайте файл bower.json).

обратите внимание, что все вопросы должны быть предварительно заполнены вашей текущей конфигурацией.

Когда вас спросят:

установить в настоящее время установленные компоненты как зависимости? скажи да,

Теперь у вас есть все ваши зависимости в новом файле bower.json (и вы можете проверить, все ли в порядке со старым bower2.json)

Себастьян Хорин
источник
Какой параметр реестра он упоминает при этом - я предполагал, что эта команда будет выполнять только локальные действия. Я решил сохранить конфиденциальность, задав этот удобный вопрос, но хотел бы узнать, что это значит - существует ли какой-то реестр интернет-беседок. Я просто думаю, что именно так bower может делать что-то вроде установки npm.
приземлился
2
@landed: это будет реестр пакетов bower ( bower.io/search ) HTH
ЗА
У меня это не сработало, потому bower.jsonчто не перечислил angular:'1.5.5'. Это потому, что я angular-animateустановил, и поскольку это зависит от angular 1.5.5bower, решил не включать angularв bower.json(учитывая, что он все равно установит его, когда кто-то сделает bower installдля этого bower.json). Это будет проблемой , если кто - то удалить angular-animateиз bower.jsonв этом случае bowerне будет устанавливать angularслишком , так как его нет в списке.
Akash
35

Немного сложный способ - запустить bower list, найти пакеты, помеченные как посторонние, и добавить их вручную в зависимости в bower.json.

Если есть много посторонних пакетов, может быть проще обойти это, запустив bower initи ответив Да, чтобы «установить в настоящее время установленные компоненты как зависимости?». Он возьмет ваш текущий bower.json, прочитает его, а затем создаст новый, используя информацию из старого. Так что в идеальном случае у вас будет тот же файл, только с добавленными посторонними пакетами.

Предупреждение : Во-первых, что-то может быть потеряно в процессе (например devDependecies). Во-вторых, в последней версии bower (v1.2.7) это не сохранит информацию о текущих пакетах! Я чувствую, что это ошибка. Однако вы можете сохранить старый файл и (вручную) объединить его с созданным.

Кроме того, вы должны попросить вариант или что-то еще, открыв проблему с беседкой, поскольку это приветствуется многими разработчиками.

Робин Покорный
источник
3
Примечание: bower 1.3.3 сохраняет информацию о текущих пакетах.
Билл Келлер
27

Вы можете использовать bower-check-updates (на вашем компьютере должен быть установлен node.js):

bower-check-updates это утилита, которая автоматически настраивает bower.json с учетом последней версии всех зависимостей

bower-check-updates - это форк npm-check-updates , так что все равно, но обновления bower.json, а неpackage.json

npm install -g bower-check-updates
bower-check-updates -u
bower install 

Он будет установлен bower-check-updatesглобально, поэтому вы можете запускать его откуда угодно.

PS для получения дополнительной информации о просьбах о npm-check-updates смотрите эту тему

Сергей Панфилов
источник
Может бытьbower install
Ámon Tamás
@ ÁmonTamás bower installне обновлял bower.json.
Сергей Панфилов
5
Автор bower-check-updates отказался от проекта в пользу npm-check-updates, в которой добавлена ​​поддержка обновления bower.json.
congusbongus
2

Если у вас не так много пакетов bower, попробуйте написать bower install [package_name] --save. Это просто обновит ваш файл bower.json.

superjisan
источник
0

После bower-check-updates -uвы должны бежать bower installвместоnpm install

Амон Тамаш
источник