¿Cómo actualizar bower.json con los paquetes instalados?

129

En mi proyecto he instalado bowercomponentes sin la opción de guardar . Ahora, me gustaría actualizar a bower.json?

¿Cómo puedo actualizar bower.json con los paquetes instalados?

Konga Raju
fuente
2
La falta de una forma de hacerlo en un solo paso parece una deficiencia. Como hay un comando de desinstalación, parece que ejecutar bower installsin --savesiempre sería más difícil y nunca más fácil.
Chris
1
Si no tiene nada en su bower.json, simplemente retírelo y escriba bower initsu consola.
Jean-Luc Barat

Respuestas:

146

Solo enumere sus dependencias:

bower list

Entonces deberías ejecutar todos los comandos de instalación con el parámetro '--save' así:

bower install bootstrap --save

Es un trabajo duro, pero si tiene mil dependencias, ¿podría crear un script para automatizar la tarea?

Helder Robalo
fuente
Esta es una respuesta genial. ¡Gracias!
jessegavin
1
Descubrí que esto se volvió problemático con solo ~ 10 paquetes, ya que no es obvio qué paquetes se descargaron como dependencias de otros, lo que provocó que Bower solicitara números de versión. Incluso con las respuestas correctas, el archivo bower.json resultante no era del todo correcto. Trabajé con la respuesta de Sebastien, que funcionó para mí.
gb2d
Las dependencias que no se han declarado en bower.json se identifican con una etiqueta "extraña" en la consola.
otaviodecampos
135

Un pequeño truco si no quieres escribir un guión para eso:

antes de hacer nada, cambie el nombre de su bower.json en bower2.json, por ejemplo.

entonces puedes hacer un:

$ bower init

(crea automáticamente un archivo bower.json).

tenga en cuenta que todas las preguntas deben rellenarse previamente con su configuración actual.

Cuando te preguntará:

establecer componentes instalados actualmente como dependencias? decir que sí,

Ahora tiene todas sus dependencias en el nuevo archivo bower.json (y puede verificar si todo está bien con el viejo bower2.json)

Sebastien Horin
fuente
¿Cuál es la opción de registro que menciona al hacer esto? Supuse que este comando estaría haciendo solo algo local. Elegí mantener la mía en privado con esa práctica pregunta, pero me gustaría saber qué significa eso: ¿hay algún tipo de registro de Internet Bower? Estoy en línea pensando que así es como Bower podría hacer un tipo de instalación npm.
aterrizó
2
@landed: ese sería el registro de paquetes de bower ( bower.io/search ) HTH
PARA el
Esto no funcionó para mí porque bower.jsonno figuraba en la lista angular:'1.5.5'. Esto se debe a que había angular-animateinstalado y puesto que depende de angular 1.5.5bower decidió no incluir angularen el bower.json(teniendo en cuenta que lo instalará todos modos cuando alguien hace una bower installpara esta bower.json). Este será un problema si alguien quite angular-animatede bower.jsonen cuyo caso bowerno se instalará angulartambién, ya que no es enumerado.
Akash
35

Una manera un poco ardua es ejecutar bower list, buscar paquetes etiquetados como extraños y agregarlos manualmente a las dependencias en el bower.json.

Si hay muchos paquetes extraños , podría ser más fácil solucionar esto ejecutandobower init y respondiendo para "configurar los componentes instalados actualmente como dependencias". Esto tomará su actual bower.json, la leerá y luego creará una nueva utilizando la información de la anterior. Entonces, en un caso ideal, tendrá el mismo archivo solo con paquetes extraños agregados.

Advertencia : en primer lugar, puede haber algo perdido en el proceso (por ejemplo devDependecies). En segundo lugar, en la última versión de bower (v1.2.7), esto no preservará la información de los paquetes actuales. Siento que es un error. Sin embargo, puede guardar el archivo antiguo y (manualmente) fusionarlo con el generado.

Además, debe solicitar una opción o algo al abrir un problema de bower, ya que muchos desarrolladores lo agradecerían.

Robin Pokorny
fuente
3
Nota: bower 1.3.3 conserva la información de los paquetes actuales.
Bill Keller
27

Puede usar bower-check-updates (necesita instalar node.js en su máquina):

bower-check-updates es una utilidad que ajusta automáticamente un bower.json con la última versión de todas las dependencias

bower-check-updates: es una bifurcación de npm-check-updates , por lo que es todo lo mismo pero actualizaciones bower.json, en lugar depackage.json

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

Esto instalará bower-check-updates nivel mundial, por lo que puede iniciarlo desde cualquier lugar.

PD: para obtener más información sobre npm-check-updates, consulte este tema

Sergei Panfilov
fuente
Quizásbower install
Ámon Tamás el
@ ÁmonTamás bower installno actualizó bower.json.
Sergei Panfilov
55
El autor de bower-check-updates ha desaprobado el proyecto a favor de npm-check-updates, que ha agregado soporte para actualizar bower.json.
congusbongus
2

Si no hay tantos paquetes de bower que haya instalado, intente escribir bower install [package_name] --save. Esto solo actualizará su archivo bower.json.

superjisan
fuente
0

Después bower-check-updates -udebes correr en bower installlugar denpm install

Ámon Tamás
fuente