Git - Ignora la carpeta node_modules en todas partes

368

Tengo un proyecto que contiene muchos otros proyectos:

  • Proyecto principal
    • Mini proyecto 1
    • Mini proyecto 2

Todo lo que contiene la node_modulescarpeta. Quiero que git ignore la carpeta sin importar dónde comience desde la carpeta raíz. Algo como esto para agregar .gitignore:

*node_modules/*
Mehdiway
fuente

Respuestas:

748

Agrega esto

node_modules/

al .gitignorearchivo de ignorar todos los directorios llamados node_modulesen la carpeta actual y todas las subcarpetas

Alik
fuente
¿Cuál sería el camino global para hacer lo mismo para el karma, excluye?
SuperUberDuper
77
Para una plantilla de gitignore para nodejs: github.com/github/gitignore/blob/master/Node.gitignore
Xavier Egea
8
Consulte la respuesta de @ AndrewSchreiber si ha agregado previamente la carpeta node_modules a git. Deberá eliminarlo del caché con "git rm -r --cached node_modules".
Casper
176

Utilice el one-liner universal en la terminal en el directorio del proyecto:

toque .gitignore && echo "node_modules /" >> .gitignore && git rm -r --cached node_modules; estado git

Funciona sin importar si ha creado .gitignoreo no, no importa si ha agregado node_modulesal seguimiento de git o no.

Luego comprometerse y empujar los .gitignorecambios.

Explicación

touchgenerará el .gitignorearchivo si aún no existe.

echoy se >>agregará node_modules/al final de .gitignore, haciendo que la node_modulescarpeta y todas las subcarpetas sean ignoradas.

git rm -r --cachedelimina la node_modulescarpeta del control git si se agregó antes. De lo contrario, esto mostrará una advertencia pathspec 'node_modules' did not match any files, que no tiene efectos secundarios y puede ignorar con seguridad. Las banderas hacen que la eliminación sea recursiva e incluyen el caché.

git statusMuestra los nuevos cambios. Aparecerá un cambio en .gitignore, mientras node_modulesque no aparecerá ya que git ya no lo rastrea.

Andrew Schreiber
fuente
55
touchno debería ser necesario aquí: >>creará el archivo si no existe.
lionello
touches necesario >>Volveremos de lo no such file or directory: .gitignorecontrario.
Andrew Schreiber
1
Hmm, parece diferir de un sistema operativo a otro
lionello
macOS parece no necesitar contacto
Carles Alcolea
echo "node_modules/" > .gitignoredebe crear un nuevo archivo con contenido original, usando >> APPENDs texto en el final del actual especificada archivo
ChrisZ
28

Intenta hacer algo como esto

**/node_modules

** se usa para una llamada recursiva en todo el proyecto

Dos asteriscos consecutivos **en patrones que coinciden con el nombre de ruta completo pueden tener un significado especial:

Un encabezado **seguido de una barra inclinada significa coincidencia en todos los directorios. Por ejemplo, **/foocoincide con el archivo o directorio en foocualquier lugar, igual que el patrón foo. **/foo/barcoincide con el archivo o directorio en barcualquier lugar que esté directamente debajo del directorio foo.

Un rastro /**coincide con todo lo que hay dentro. Por ejemplo, abc/**coincide con todos los archivos dentro del directorio abc, en relación con la ubicación del archivo .gitignore, con profundidad infinita.

Una barra inclinada seguida de dos asteriscos consecutivos y luego una barra inclinada coincide con cero o más directorios. Por ejemplo, a/\**/bpartidos a/b, a/x/b, a/x/y/by así sucesivamente.

Otros asteriscos consecutivos se consideran inválidos.

Referencia

Rajendran Nadar
fuente
2
Esta es la respuesta correcta.
Rey
¿Le gustaría explicar por qué este enfoque es mejor que simplemente node_modules/?
Tanckom
22

Lo primero y más importante es agregar un .gitignorearchivo en mi aplicación. Al igual que en la imagen de abajo.

Ponga .gitignore en la carpeta / directorio padre de node_modules.

y luego agregue esto en su .gitignorearchivo

/node_modules

Nota

También puede agregar otros archivos para ignorarlos y enviarlos a Github. Aquí hay algunos archivos más guardados en .gitignore. Puede agregarlos de acuerdo a sus requerimientos. #es solo una forma de comentar en el archivo .gitignore.

# See https://help.github.com/ignore-files/ for more about ignoring files.

# dependencies
/node_modules

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
Mustkeem K
fuente
¿Por qué agregarías build al .gitignore?
Sebastian Nielsen
66
@SebastianNielsen La misma razón por la que no rastreamos node_modules. Obtienes compilación / compilando.
Daniel Foust
8

Cree el archivo .gitignore en la carpeta raíz directamente por el editor de código o por comando

Para Mac y Linux

 toque .gitignore 

Para ventanas

 echo .gitignore 

abrir .gitignore declarar carpeta o nombre de archivo como este / foldername

Amit Kumar
fuente
4

Agregar debajo de la línea en .gitignore ignorará los módulos de nodo de todo el repositorio.

node_modules

ingrese la descripción de la imagen aquí

Umesh Khurana
fuente
1
¿Cómo? Solo ignorará la carpeta node_modules en la misma carpeta donde está presente el archivo .gitignore
Rajendran Nadar
@RajendranNadar gracias, solo estaba tratando de resolverlo yo mismo.
Jack BeNimble
0

Agregue la línea de abajo a su .gitignore

*/node_modules/*

Esto ignorará todos los node_modules en su directorio actual, así como el subdirectorio.

Manish Dubey
fuente
Tenga en cuenta que ya hay una respuesta aceptada a esta pregunta. Por favor, editar su respuesta para asegurarse de que mejora las otras respuestas que ya están presentes en esta pregunta.
hongsy
0

puedes hacerlo con SVN / Tortoise git también.

simplemente haga clic derecho en node_modules -> Tortoise git -> agregar para ignorar la lista.

Esto generará .gitIgnore para usted y no encontrará la carpeta node_modules en la puesta en escena nuevamente.

Dhruvesh Patel
fuente
0
**node_modules

Esto funciona para mi

enfoque recursivo para ignorar todos los node_modules presentes en las subcarpetas

Hanzla Habib
fuente