Cómo versionar y administrar los componentes de angularjs para diferentes proyectos

Esta es una pregunta más curiosa que técnica. En mi compañía tenemos un MVP con muchos componentes angularjs, pero ahora, estamos ofreciendo el MVP a diferentes compañías con necesidades específicas.

Esto es lo que se verá en el escenario de la vida real:

Empresa 1

  • Módulo 1
  • Módulo 2
  • Módulo 3

Compañía 2

  • Módulo 1 (con una característica específica o cambio)
  • Módulo 3

Compañía 3

  • Módulo 2
  • Módulo 3
  • Módulo 4 (solo para este proyecto)

Y estábamos buscando un sistema de versión que pudiera encajar en nuestro model de negocio futuro, porque mientras hablamos, estamos usando sucursales para diferentes compañías y otras sucursales para características de componentes específicos.

Puedes ver el infierno en que se ha convertido. Es realmente difícil de mantener y es aún más difícil implementar las diferentes versiones de la aplicación.

Estaré encantado de compartir mis hallazgos si se nos ocurre una solución para este caso. Escribiré una publicación de blog si ese es el caso.

¡Gracias!

¿Está buscando la gestión de la orientación del process o herramientas?

Desde el punto de vista de las herramientas, podría usar npm, con su service de package privado o simplemente dirigirse a algún repository privado de git. Bower puede hacer lo mismo.

En el espacio de Windows hay NuGet para el que puedes alojar tus repositorys o también hay services para eso.

Git tiene soporte para submodules y subtreees, pero personalmente no los recomiendo. Hacer que las dependencies sean parte de tu historial real de git es complicado.

Lo más importante desde la perspectiva del process es, probablemente, evitar evitar los cambios. Ponga el esfuerzo en el layout de los componentes compartidos por adelantado para que no tenga que networkingiseñar todo alnetworkingedor del componente compartido cuando cambia drásticamente porque no funcionó del mismo modo en que se creó la primera vez.

Trate sus modules compartidos como si fueran proyectos de código abierto. Mantenga una buena documentation, limpie el código y siga las versiones semánticas. Aplique numbers de versión a comstackciones estables (los label git para que sean fáciles de verificar). Ponga a alguien a cargo de aceptar cambios en el componente para que pueda hacer un seguimiento de lo que todos los demás están haciendo con él y guiar su desarrollo.

Unirlo a un nuevo package de requisitos que un proyecto tiene es muy diferente a los demás. Mantener un componente con demasiados requisitos diferentes puede convertirse en una pesadilla.