No estoy 100% seguro de los aspectos positivos. Aquí hay algunos puntos negativos
A menudo terminas agregando dependencias a servidores / puntos finales de terceros que podrían no ser estables.
Me ha sucedido con Bower que el repositorio de algunas dependencias fue eliminado o movido. Entonces aparece un nuevo desarrollador, clona mi repositorio, escribe bower install
y obtiene errores para repositorios
inaccesibles. Si, en cambio, hubiera registrado el código de terceros en mi repositorio, ese problema desaparecerá.
Esto se resuelve como sugiere el OP si está sacando deps de las copias guardadas en un servidor que ejecuta.
Más difícil para los novatos.
Trabajo con estudiantes de arte con muy poca experiencia en línea de comandos. Hacen arte con Processing, arduino, Unity3D, y se las arreglan con muy poco conocimiento tecnológico. Querían usar algunos HTML5 / JavaScript que escribí. Pasos por la glorieta
- Descargue Zip of repo de github (observe que está a la derecha de cada repositorio en github. Porque no conocen gitub)
- Descargue e instale el nodo (para que podamos ejecutar npm para instalar Bower)
- Instale git o msysgit (porque Bower lo requiere y no está instalado en las máquinas de muchos estudiantes)
- Instalar la glorieta (
npm install -g bower
)
bower install
(finalmente para obtener nuestras dependencias)
Los pasos 2 a 5 se pueden eliminar si solo registramos los archivos en nuestro repositorio de github. Esos pasos probablemente suenen súper fáciles para ti y para mí. Para los estudiantes eran muy confusos y querían saber cuáles eran todos los pasos, dónde y para qué servían, lo que podría ser un buen aprendizaje, pero era completamente ortogonal al tema de la clase y probablemente se olvidó rápidamente.
Agrega otro paso al tirar.
Sucedió muchas veces que hago un git pull origin master
y luego pruebo mi código y me lleva de 5 a 10 minutos recordar que necesitaba escribir bower install
para obtener las últimas versiones. Estoy seguro de que eso se resuelve fácilmente con algún gancho de script de extracción.
Hace que la ramificación de git sea más difícil
Si 2 ramas tienen diferentes deps, estás jodido. Supongo que puedes escribir bower install
después de cada git checkout
. Demasiado para la velocidad.
En cuanto a sus aspectos positivos, creo que hay ejemplos contrarios para cada uno de esos
Facilita el proceso de distribución e importación de módulos compartidos, especialmente actualizaciones de versiones.
vs que? Ciertamente no es más fácil de distribuir. Hacer un repositorio en lugar de 20 no es más fácil y es más probable que falle. Ver # 1 arriba
Elimina los módulos compartidos del control de origen, acelerando y simplificando los checkouts / check ins (cuando tienes aplicaciones con más de 20 bibliotecas, esto es un factor real).
Por el contrario, significa que depende de otros para arreglos. Lo que significa que si sus departamentos están extrayendo de una fuente de terceros y necesita un error corregido, debe esperar a que apliquen su parche. Peor aún, es probable que no pueda simplemente tomar la versión que desea más su parche, tendría que tomar la última versión que podría no ser compatible con su proyecto.
Puede resolver eso clonando sus repositorios por separado y luego apunta sus departamentos de proyecto a sus copias. Luego aplica cualquier corrección a sus copias. Por supuesto, también podría hacerlo si solo copia la fuente en su repositorio
Permite un mayor control o conocimiento de qué bibliotecas de terceros se utilizan en su organización.
Eso parece discutible. Solo requiere que los desarrolladores pongan bibliotecas de terceros en su propia carpeta <ProjectRoot>/3rdparty/<nameOfDep>
. Es igual de fácil ver qué bibliotecas de terceros se utilizan.
No digo que no haya aspectos positivos. El último equipo en el que estuve tenía> 100 deps de terceros. Solo estoy señalando que no todas son rosas. Estoy evaluando si debería deshacerme de Bower para mis necesidades, por ejemplo.