¿Cómo bifurcar un paquete Meteorite existente de forma limpia?

Estoy tratando de encontrar la manera mejor / más limpia de incluir un paquete existente en Atmosphere dentro de un proyecto. Me encontré con algunas ocasiones en las que un paquete existente necesitaba algunas modificaciones y me vi obligado a hacerlo.

Por lo que sé, existen las siguientes opciones. Desafortunadamente, todos estos tienen sus propios problemas y todavía tengo que encontrar la solución perfecta. usarémeteor-router como ejemplo:

1. Simplemente copie los archivos del paquete en su carpeta de paquetes

Pasos:

retirarpackages/router/.git/editarpackages/.gitignore y eliminar la línea 'router'quitar el enrutador de susmart.jsonañadirpackages/router a tu repositorio de proyectos y comprometeahora haga cambios (de esta manera, su confirmación inicial es una versión limpia y usted puede resolver lo que ha cambiado usted mismo)

Ventajas:

fácil de lograr y entenderTodo el código en el que confía se puede encontrar en el repositorio de su proyecto

Desventajas:

Pierdes toda la historia de los repositorios originales.es difícil actualizar a una versión más nuevaEs difícil aportar tus cambios al proyecto original.

¡Ni siquiera consideres esto para ninguno de los paquetes más simples!

2. Tenedor en github, entonces ...

Para bifurcar un paquete en github, puedes revisar tusmart.lock archivo para ver qué repositorio se está utilizando. Vaya a la página github de ese repositorio y bifurque.

A continuación, tienes tres opciones:

2a. Añadirlo como un submódulo de git.

Más información sobre los submódulos de git:http://git-scm.com/book/en/Git-Tools-Submodules

Pasos:

Vea el enlace anterior sobre cómo iniciar / crear / actualizar un submóduloRetire el paquete de susmart.json

Ventajas:

Las versiones de submódulos están conectadas a su proyecto.Los cambios son recogidos inmediatamente.

Desventajas:

Todos los desarrolladores necesitan ejecutargit submodule init la primera vez yupdate actualizarDebe tener en cuenta los problemas con los submódulos al editar el proceso de pago.Lea sobre otros temas con submódulos2b. Edita tu proyectosmart.json usar tu versión

Pasos:

En tussmart.json, encontrar"router": {} y añadir"git": "https://github.com/USER/meteor-router.git" dentro del vacío{}.Opcionalmente, agregue un"branch" o"tag".

Ventajas:

Aún puedes usar Meteorite para administrar tus paquetes externosTrabajará automáticamente para otros desarrolladores y en entornos de implementación.

Desventajas:

El código en su carpeta de paquetes no es editable, ya que no es un repositorio gitMeteorite no se actualizará automáticamente a la última versión cada vez que lo ejecute

(Mejora sugerida de Meteorite: permite que los paquetes se instalen en una forma editable, como el pip de Python permite usar el parámetro '-e')

2c. Clone fuera de su proyecto y agregue un"path" asmart.json

Pasos:

Clona el paquete a un lugar fuera de tu proyectoSimilar a 2b, agrega un"path" para ustedsmart.json apuntar Meteorite a su caja local

Ventajas:

Puede editar el paquete a voluntad y Meteor recogerá automáticamente los cambios.

Desventajas:

Si te comprometes estosmart.json, lo más probable es que rompa todos los demás entornos de desarrollo / implementación ...

¿Qué método utilizas? ¿Cómo se resuelven las desventajas de ese método?

Es posible que me haya perdido algunos problemas con estas soluciones.

Respuestas a la pregunta(4)

Su respuesta a la pregunta