Adecuado `.gitignore` para Node.js

2 minutos de lectura

Estructura de árbol

Así es como está organizado mi proyecto Node.js:

/
| - node_modules               [+ INCLUDE]
|   | - my-mod1
|   |   | - node_modules       [- IGNORE]
|   |   |   | - external-mod1 
|   |   |   | - external-mod2 
|   |   | - src
|   |   |   | - node_modules   [+ INCLUDE]
|   |   |   |   | - my-mod2 
|   |   |   |   | - my-mod3
|   | - my-mod4

Mi plan

Al publicar mi proyecto en GitHub:

  • yo desear para incluir my-mods.
  • yo no quiero para incluir el
    external-mods.

Eso significa:

  • yo desear para incluir el nivel superior /node_modules carpeta.
  • yo no quiero para incluir node_modules carpetas que son niños directos de una carpeta de módulo.
  • Pero yo desear para incluir node_moduels carpetas que son hijos de un src carpeta.

Lo que hice

Agregué las siguientes líneas a /.gitignore:

#################  
## npm
#################

npm-debug.log
node_modules/
!/node_modules/
!src/node_modules/

Mi pregunta

Cual .gitignore normas lo necesito incluir el derecho node_modules carpetas (como se describe arriba)?

Gracias – si algo no está claro, por favor comente.

  • Personalmente, incluir cualquier node_modules que pueda recuperarse con una instalación de npm es un mal olor. Hay varios lugares en la web donde he leído esto, aquí hay uno: blog.heroku.com/archives/2015/11/10/node-habits-2016 y en realidad me causó problemas de implementación una vez porque algunos node_modules deben construirse de cierta manera para diferentes plataformas

    –Jacob McKay

    13 de noviembre de 2015 a las 20:36

avatar de usuario de functionoid
funcionaloide

Dado que su estructura está bastante organizada, podría usar este patrón para realizar la tarea.

/node_modules/*/node-modules/ 

El patrón anterior ignorará node_modules en las carpetas de módulos, my-mod1, my-mod4 y otros.

La línea anterior aún permitirá que se incluyan los node_modules en el directorio src cuando presione a github.

avatar de usuario de ben.snape
ben.snape

node_modules/**/node_modules debería funcionar para lo que estás tratando de hacer.

Consejo: GitHub proporciona estándar .gitignore‘s para varios idiomas como Nodo.

  • Gracias por tu respuesta. – Ya sabía el github/gitignore repositorio, pero no había nada adecuado para mi caso de uso.

    – fdj815

    19 de febrero de 2013 a las 17:34

  • Pensé que probablemente lo hiciste, pero siempre es útil señalarlo 🙂 hizo el .gitignore línea de trabajo para usted?

    – ben.snape

    20 de febrero de 2013 a las 8:43

  • No, es una buena idea (gracias), pero desafortunadamente no manejó el ./node_modules dentro de src carpetas correctamente. – Traté de definir la condición de otra manera (ver mi propia respuesta).

    – fdj815

    23 de febrero de 2013 a las 15:23

Gracias por tus respuestas.

Reconsideré la condición y decidí declarar la condición de otra manera: funciona perfectamente:

node_modules/*/node_modules

Espero que esto pueda ayudar a alguien en el futuro.

node_modules/*
!node_modules/**/node_modules

¿quizás?

¿Ha sido útil esta solución?