¿Se deben ignorar los componentes de bower?

157

¿Sería una buena práctica mantener solo el bower.jsonarchivo y ignorar todo el bower_componentsdirectorio?

Pierre de LESPINAY
fuente
Acabo de notar un libro de cocina oficial de Symfony que en realidad responde a esta pregunta exacta, citando "Actualmente, probablemente debería comprometer los activos descargados por Bower en lugar de agregar el directorio a su .gitignorearchivo"
Pierre de LESPINAY

Respuestas:

149

La página oficial de Bower declaró:

Nota: si no está creando un paquete destinado a ser consumido por otros (por ejemplo, si está creando una aplicación web), siempre debe verificar los paquetes instalados en el control de código fuente .

Asegúrese de revisar el enlace en la cita, se discuten algunos pros y contras. La principal ventaja que menciona es que registrarlos garantiza que sus dependencias estén siempre disponibles, siempre que su repositorio esté disponible. No importa lo que le pase a Bower, GitHub o cualquier otra cosa que se necesite de otra manera.

TimWolla
fuente
1
Gracias por este interesante articulo. Así que por ahora todavía no tenemos un "archivo de bloqueo" equivalente a congelar las versiones.
Pierre de LESPINAY
1
@PierredeLESPINAY Solo para el nivel superior. Lo que falta es un equivalente de la función npm shrinkwrap.
Passy
3
También dicen esto en su publicación de blog "En última instancia, la elección de si se debe registrar o no todo el directorio / bower_components depende de usted ...".
Krishnaraj
3
El razonamiento detrás de registrarlos es que algún día la biblioteca podría desaparecer de Internet o podría haber algún tiempo de inactividad que a su vez podría causar fallas de compilación. Como usuario de Maven / Gradle, nunca pienso en registrar dependencias.
Krishnaraj
77
El consejo en la página oficial de Bower para verificar los paquetes instalados en el control de origen se eliminó en 2014: github.com/bower/bower.github.io/commit/…
usuario
52

El archivo .gitignore en un proyecto Yeoman AngularJS recientemente generado tiene bower_components (y node_modules) listados para ser ignorados (si no conoce a Yeoman, es una herramienta de andamiaje web de buena reputación para aplicaciones web modernas, ¡eso es lo suficientemente bueno para mí!):

.gitignore

node_modules
dist
.tmp
.sass-cache
bower_components
usuario12121234
fuente
9

Hay un momento y un lugar para ambos enfoques. Para Yeoman, es apropiado confiar en bower.json porque es una herramienta en una cadena de herramientas y necesita mantenerse vivo y respirar con el ecosistema de Bower. Para una aplicación web desplegable, generalmente es una buena práctica confirmar dependencias y mantener un mayor control.

Aquí hay un buen artículo que me gusta que discute esto.

JoshuaDavid
fuente
6

Si está usando Grunt and Node con Bower, tiene sentido poner bower_components en su .gitignore porque cuando ejecuta grunt serve o grunt build se ocupa de las dependencias por usted, estoy seguro de que es por eso que en Yeoman lo agregan a el .gitignore

Yves
fuente
5

El generador Yeoman rellenó previamente el archivo .gitignore con bower_components, pero también rellenó previamente otros directorios que creo que serían necesarios para una aplicación final (como www), así que investigué un poco.

Descubrí que www / index.html es una versión reducida de la aplicación / index.html. El directorio de la aplicación y sus contenidos (incluidos bower_components) contienen los archivos fuente necesarios para el directorio de salida (www). Confirma directorios de origen en control de origen (es decir, git) pero no archivos generados (es decir, www). Los administradores de paquetes como bower y npm están destinados a ser utilizados durante la fase de construcción / generación y sus artefactos no están destinados a ser controlados en el control de origen.

En última instancia, la fuente que verifica en git es la configuración mínima necesaria para construir el resto del proyecto con fines de desarrollo o implementación.

Erich Cervantez
fuente
0

Es bueno ignorar /bower_componentsdir y registrarse solo bower.jsony bower-locker.bower.jsonarchivo si crea un archivo de bloqueo usando bower-locker escrito por Shawn Lonas .

Antes de que se creara el bower-locker, había una desventaja causada por un problema de que el bower no tenía la capacidad de envoltura retráctil, pero puede mitigarse con la biblioteca anterior.

Ejecute los siguientes comandos para lograrlo:

npm install bower-locker -g

o

yarn global add bower-locker

luego genere un archivo de bloqueo basado en el bower.jsonarchivo existente ejecutando:

bower-locker lock

El bower.jsonarchivo original será renombrado abower-locker.bower.json

Joel Handwell
fuente