Git - Ignoriere den Ordner node_modules überall

367

Ich habe ein Projekt mit mehreren anderen Projekten:

  • Hauptprojekt
    • Miniprojekt 1
    • Mini-Projekt 2

Alle enthalten node_modulesOrdner. Ich möchte, dass git den Ordner ignoriert, egal wo er vom Stammordner ausgeht. So etwas in .gitignore hinzuzufügen:

*node_modules/*
Mehdiway
quelle

Antworten:

747

Füge das hinzu

node_modules/

in .gitignoreDatei, um alle node_modulesim aktuellen Ordner aufgerufenen Verzeichnisse und alle Unterordner zu ignorieren

Alik
quelle
Was wäre der globale Weg, um dasselbe für Karma zu tun?
SuperUberDuper
7
Für eine Gitignore-Vorlage für NodeJS: github.com/github/gitignore/blob/master/Node.gitignore
Xavier Egea
8
Siehe @ AndrewSchreibers Antwort, wenn Sie zuvor den Ordner node_modules zu git hinzugefügt haben. Sie müssen es mit "git rm -r --cached node_modules" aus dem Cache entfernen.
Casper
176

Verwenden Sie den universellen Einzeiler im Terminal im Projektverzeichnis:

Berühren Sie .gitignore && echo "node_modules /" >> .gitignore && git rm -r --cached node_modules; Git-Status

Es funktioniert unabhängig davon, ob Sie ein erstellt haben .gitignoreoder nicht, unabhängig davon, ob Sie das node_modulesGit-Tracking hinzugefügt haben oder nicht.

Dann festschreiben und die .gitignoreÄnderungen pushen .

Erläuterung

touchgeneriert die .gitignoreDatei, falls sie noch nicht vorhanden ist.

echound >>wird node_modules/am Ende von angehängt .gitignore, wodurch der node_modulesOrdner und alle Unterordner ignoriert werden.

git rm -r --cachedEntfernt den node_modulesOrdner aus der Git-Steuerung, wenn er zuvor hinzugefügt wurde. Andernfalls wird eine Warnung angezeigt pathspec 'node_modules' did not match any files, die keine Nebenwirkungen hat und die Sie ignorieren können. Die Flags bewirken, dass das Entfernen rekursiv ist und den Cache enthält.

git statuszeigt die neuen Änderungen an. Eine Änderung von .gitignorewird angezeigt, während node_modulessie nicht angezeigt wird, da sie nicht mehr von git verfolgt wird.

Andrew Schreiber
quelle
5
touchsollte hier nicht notwendig sein: >>Erstellt die Datei, wenn sie nicht existiert.
Lionello
touchwird gebraucht. >>wird no such file or directory: .gitignoresonst zurückkehren.
Andrew Schreiber
1
Hmm, scheint sich von Betriebssystem zu Betriebssystem zu unterscheiden
Lionello
macOS scheint keine Berührung zu brauchen
Carles Alcolea
echo "node_modules/" > .gitignoresollte eine erstellen neue Datei mit dem ursprünglichen Inhalt, mit >> Hängt Text an das Ende der Datei angegeben bestehenden
Chrisz
28

Versuchen Sie so etwas zu tun

**/node_modules

** wird für einen rekursiven Aufruf im gesamten Projekt verwendet

Zwei aufeinanderfolgende Sternchen **in Mustern, die mit dem vollständigen Pfadnamen übereinstimmen, können eine besondere Bedeutung haben:

Ein Lead **gefolgt von einem Schrägstrich bedeutet Übereinstimmung in allen Verzeichnissen. Entspricht beispielsweise einer **/fooDatei oder einem Verzeichnis an einer foobeliebigen Stelle, genau wie das Muster foo. **/foo/barEntspricht einer Datei oder einem Verzeichnis an einer barbeliebigen Stelle direkt unter dem Verzeichnis foo.

Ein Trailing /**passt zu allem im Inneren. Entspricht beispielsweise abc/**allen Dateien im Verzeichnis abcrelativ zum Speicherort der .gitignore-Datei mit unendlicher Tiefe.

Ein Schrägstrich gefolgt von zwei aufeinanderfolgenden Sternchen, dann entspricht ein Schrägstrich null oder mehr Verzeichnissen. Zum Beispiel, a/\**/bStreichhölzer a/b, a/x/b, a/x/y/bund so weiter.

Andere aufeinanderfolgende Sternchen gelten als ungültig.

Referenz

Rajendran Nadar
quelle
2
Dies ist die richtige Antwort.
König
Möchten Sie erklären, warum dieser Ansatz besser ist als nur node_modules/?
Tanckom
22

In erster Linie ist das Hinzufügen einer .gitignoreDatei in meiner App. Wie im Bild unten.

Legen Sie .gitignore im übergeordneten Ordner / Verzeichnis von node_modules ab.

und als nächstes fügen Sie dies in Ihre .gitignoreDatei

/node_modules

Hinweis

Sie können auch andere Dateien hinzufügen, um sie zu ignorieren und auf Github zu übertragen. Hier sind einige weitere Dateien, die in .gitignore gespeichert sind. Sie können sie entsprechend Ihrer Anforderung hinzufügen. #ist nur eine Möglichkeit, in der .gitignore-Datei zu kommentieren.

# 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.
quelle
Warum sollten Sie dem .gitignore einen Build hinzufügen?
Sebastian Nielsen
6
@SebastianNielsen Der gleiche Grund, warum wir node_modules nicht verfolgen. Sie erhalten Build / durch Kompilieren.
Daniel Foust
8

Erstellen Sie die Gitignore- Datei im Stammordner direkt mit dem Code-Editor oder per Befehl

Für Mac & Linux

 Berühren Sie .gitignore 

Für Windows

 echo .gitignore 

open .gitignore deklariert Ordner- oder Dateinamen wie diesen / Ordnername

Amit Kumar
quelle
4

Durch Hinzufügen der folgenden Zeile in .gitignore werden Knotenmodule aus dem gesamten Repository ignoriert.

node_modules

Geben Sie hier die Bildbeschreibung ein

Umesh Khurana
quelle
1
Wie? Der Ordner node_modules wird nur in demselben Ordner ignoriert, in dem sich die .gitignore-Datei befindet
Rajendran Nadar
@ RajendranNadar danke, ich habe nur versucht, das selbst herauszufinden.
Jack BeNimble
0

Fügen Sie Ihrem .gitignore die folgende Zeile hinzu

*/node_modules/*

Dadurch werden alle Knotenmodule in Ihrem aktuellen Verzeichnis sowie im Unterverzeichnis ignoriert.

Manish Dubey
quelle
Beachten Sie, dass diese Frage bereits akzeptiert wurde. Bitte bearbeiten Sie Ihre Antwort, um sicherzustellen, dass sie andere Antworten verbessert, die bereits in dieser Frage enthalten sind.
Hongsy
0

Sie können es auch mit SVN / Tortoise Git tun.

Klicken Sie einfach mit der rechten Maustaste auf node_modules -> Tortoise git -> Hinzufügen, um die Liste zu ignorieren.

Dadurch wird .gitIgnore für Sie generiert und Sie finden den Ordner node_modules nicht mehr im Staging.

Dhruvesh Patel
quelle
0
**node_modules

Das funktioniert bei mir

rekursiver Ansatz zum Ignorieren aller in Unterordnern vorhandenen node_modules

Hanzla Habib
quelle