Git - Ignora la cartella node_modules ovunque


368

Ho un progetto contenente più altri progetti:

  • Progetto principale
    • Mini progetto 1
    • Mini progetto 2

Tutta la node_modulescartella contenente . Voglio che git ignori la cartella, indipendentemente da dove inizia dalla cartella principale. Qualcosa del genere da aggiungere in .gitignore:

*node_modules/*

Risposte:


748

Aggiungi questo

node_modules/

per .gitignoreil file di ignorare tutte le directory denominate node_modulesin cartella corrente e tutte le sottocartelle


quale sarebbe il percorso globale per fare lo stesso per il karma, esclude?
SuperUberDuper


8
Vedi la risposta di @ AndrewSchreiber se hai precedentemente aggiunto la cartella node_modules a git. Dovrai rimuoverlo dalla cache con "git rm -r --cached node_modules".
Casper

176

Utilizzare il one-liner universale nel terminale nella directory del progetto:

toccare .gitignore && echo "node_modules /" >> .gitignore && git rm -r --code node_modules; stato git

Funziona indipendentemente dal fatto che tu l'abbia creato .gitignoreo meno, indipendentemente dal fatto che tu abbia aggiunto node_moduleso meno il git tracking.

Quindi eseguire il commit e spingere le .gitignoremodifiche.

Spiegazione

touchgenererà il .gitignorefile se non esiste già.

echoe >>verrà aggiunto node_modules/alla fine di .gitignore, facendo sì che la node_modulescartella e tutte le sottocartelle vengano ignorate.

git rm -r --cachedrimuove la node_modulescartella dal controllo git se è stata aggiunta in precedenza. Altrimenti, questo mostrerà un avviso pathspec 'node_modules' did not match any files, che non ha effetti collaterali e che puoi tranquillamente ignorare. I flag fanno sì che la rimozione sia ricorsiva e includano la cache.

git statusvisualizza le nuove modifiche. Apparirà una modifica a .gitignore, mentre node_modulesnon apparirà in quanto non è più tracciato da Git.


5
touchnon dovrebbe essere necessario qui: >>creerà il file se non esiste.
lionello

touchè necessario. >>tornerà no such file or directory: .gitignorealtrimenti.
Andrew Schreiber,

1
Hmm, sembra differire da SO a SO
Lionello

macOS sembra non aver bisogno di contatto
Carles Alcolea

echo "node_modules/" > .gitignoredovrebbe creare un nuovo file con contenuti originali, utilizzando >> accodamento testo sulla fine del esistente specificato di file
ChrisZ

28

Prova a fare qualcosa del genere

**/node_modules

** viene utilizzato per una chiamata ricorsiva nell'intero progetto

Due asterischi consecutivi **in schemi abbinati al percorso completo possono avere un significato speciale:

Un **comando seguito da una barra significa corrispondenza in tutte le directory. Ad esempio, **/foocorrisponde a file o directory fooovunque, come nel modello foo. **/foo/barcorrisponde a file o directory barovunque si trovi direttamente nella directory foo.

Un finale /**corrisponde a tutto ciò che c'è dentro. Ad esempio, abc/**corrisponde a tutti i file all'interno della directory abc, relativi alla posizione del file .gitignore, con profondità infinita.

Una barra seguita da due asterischi consecutivi, quindi una barra corrisponde a zero o più directory. Ad esempio, a/\**/ble partite a/b, a/x/b, a/x/y/be così via.

Altri asterischi consecutivi sono considerati non validi.

Riferimento


2
Questa è la risposta corretta
re il

node_modules/Vuoi spiegare perché questo approccio è migliore della semplice ?
Tanckom

22

Innanzitutto è necessario aggiungere il .gitignorefile nella mia-app. Come nell'immagine qui sotto.

Inserisci .gitignore nella cartella / directory principale di node_modules.

e poi aggiungilo nel tuo .gitignorefile

/node_modules

Nota

Puoi anche aggiungere altri file anche per ignorarli per essere inseriti su github. Ecco alcuni altri file conservati in .gitignore. Puoi aggiungerli in base alle tue esigenze. #è solo un modo per commentare il file .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*

Perché dovresti aggiungere build a .gitignore?
Sebastian Nielsen,

6
@SebastianNielsen Lo stesso motivo per cui non seguiamo node_modules. Ottieni build / compilando.
Daniel Foust,

8

Crea il file .gitignore nella cartella principale direttamente dall'editor di codice o dal comando

Per Mac e Linux

 toccare .gitignore 

Per Windows

 echo .gitignore 

apri .gitignore dichiara cartella o nome file come questo / nome utente


4

L'aggiunta della riga sotto in .gitignore ignorerà i moduli nodo dell'intero repository.

node_modules

inserisci qui la descrizione dell'immagine


1
Come? Ignorerà solo la cartella node_modules nella stessa cartella in cui è presente il file .gitignore
Rajendran Nadar

@RajendranNadar grazie, stavo solo cercando di capirlo da solo.
Jack BeNimble

0

Aggiungi la riga sotto al tuo .gitignore

*/node_modules/*

Ciò ignorerà tutti i node_modules nella directory corrente e la sottodirectory.


Si noti che esiste già una risposta accettata a questa domanda. Si prega di modificare la risposta per garantire che essa migliora altre risposte già presenti in questa domanda.
hongsy,

0

puoi farlo anche con SVN / Tortoise git.

basta fare clic destro su node_modules -> Tortoise git -> aggiungi per ignorare l'elenco.

Questo genererà .gitIgnore per te e non troverai di nuovo la cartella node_modules nella stadiazione.


0
**node_modules

Questo funziona per me

approccio ricorsivo per ignorare tutti i node_modules presenti nelle sottocartelle

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.