Como atualizar bower.json com pacotes instalados?

129

No meu projeto, instalei bowercomponentes sem a opção de salvar . Agora, gostaria de atualizar para bower.json?

Como posso atualizar o bower.json com os pacotes instalados?

Konga Raju
fonte
2
A falta de uma maneira de fazer isso parece uma deficiência. Como existe um comando de desinstalação, parece que executar bower installsem --savesempre seria mais difícil e nunca mais fácil.
Chris
1
Se você não tem nada no seu bower.json, remova-o e digite bower initseu console.
Jean-Luc Barat

Respostas:

146

Basta listar suas dependências:

bower list

Então você deve executar todos os comandos de instalação com o parâmetro '--save' assim:

bower install bootstrap --save

É um trabalho árduo, mas se você tiver mil dependências, poderá criar um script para automatizar a tarefa.

Helder Robalo
fonte
Esta é uma ótima resposta. Obrigado!
Jessegavin
1
Achei isso problemático com apenas ~ 10 pacotes, pois não é óbvio quais pacotes foram baixados como dependências de outros, o que fez com que o bower solicitasse números de versão. Mesmo com as respostas corretas, o arquivo bower.json resultante não estava certo. Eu trabalhei com a resposta de Sebastien, que funcionou para mim.
Gb2d
As dependências que não foram declaradas no bower.json são identificadas pela tag "estranha" no console.
Otaviodecampos
135

Um pequeno truque, se você não quiser escrever um script para isso:

antes de fazer qualquer coisa, renomeie seu bower.json em bower2.json, por exemplo.

então você pode fazer um:

$ bower init

(crie automaticamente um arquivo bower.json).

observe que todas as perguntas devem ser preenchidas com sua configuração atual.

Quando perguntará:

definir componentes atualmente instalados como dependências? diga sim,

Agora você tem todas as suas dependências no novo arquivo bower.json (e pode verificar se está tudo bem com o antigo bower2.json)

Sebastien Horin
fonte
Qual é a opção de registro mencionada ao fazer isso - eu tinha assumido que este comando faria apenas uma coisa local. Optei por manter o meu privado com essa pergunta útil, mas gostaria de saber o que isso significava - existe algum tipo de registro de caramanchão na Internet. Estou apenas pensando que é assim que o bower pode fazer um tipo de instalação da NPM.
desembarcou
2
@landed: esse seria o registro de pacotes do bower ( bower.io/search ) HTH
FOR
Isso não funcionou para mim, porque bower.jsonnão listou angular:'1.5.5'. Isso ocorre porque eu tinha angular-animateinstalado e, uma vez que depende do angular 1.5.5caramanchão, decidiu não incluir angularno bower.json(considerando que o instalará de qualquer maneira quando alguém fizer bower installisso por isso bower.json). Isso será um problema se alguém remover angular-animatedo bower.jsoncaso em que bowernão será instalado angulartambém, pois não está listado.
Akash
35

Uma maneira um pouco árdua é executar bower list, procurar pacotes rotulados como estranhos e adicioná-los manualmente às dependências no bower.json.

Se houver muitos pacotes externos , pode ser mais fácil solucionar isso executando bower inite respondendo Sim para "definir componentes atualmente instalados como dependências?". Isso levará seu atual bower.json, leia-o e crie um novo usando as informações do antigo. Portanto, em um caso ideal, você terá o mesmo arquivo apenas com pacotes externos adicionados.

Aviso : Em primeiro lugar, pode haver algo perdido no processo (por exemplo devDependecies). Em segundo lugar, na última versão do bower (v1.2.7), isso não preservará as informações atuais dos pacotes! Eu sinto que é um bug. No entanto, você pode salvar o arquivo antigo e (manualmente) mesclá-lo com o gerado.

Além disso, você deve solicitar uma opção ou algo assim, abrindo um problema do bower, pois isso seria bem-vindo por muitos desenvolvedores.

Robin Pokorny
fonte
3
Nota: o bower 1.3.3 preserva as informações dos pacotes atuais.
Bill Keller
27

Você pode usar o bower-check-updates (você precisa do node.js instalado em sua máquina):

bower-check-updates é um utilitário que ajusta automaticamente um arquivo bower.json com a versão mais recente de todas as dependências

bower-check-updates - é uma bifurcação de npm-check-updates , por isso é tudo a mesma coisa, exceto atualizações bower.json, em vez depackage.json

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

Isso será instalado bower-check-updatesglobalmente, para que você possa iniciá-lo de qualquer lugar.

PS para obter mais informações sobre os pedidos do npm-check-updates, consulte este tópico

Sergei Panfilov
fonte
Talvezbower install
Ámon Tamás
@ ÁmonTamás bower installnão atualizou bower.json.
Sergei Panfilov 20/01
5
O autor de bower-check-updates reprovou o projeto em favor do npm-check-updates, que adicionou suporte para a atualização do bower.json.
congusbongus
2

Se não houver muitos pacotes de bower que você instalou, tente escrever bower install [package_name] --save. Isso apenas atualizará seu arquivo bower.json.

superjisan
fonte
0

Depois de bower-check-updates -uexecutar, em bower installvez denpm install

Ámon Tamás
fonte