Git - Ignorer le dossier node_modules partout


368

J'ai un projet contenant plusieurs autres projets:

  • Projet principal
    • Mini projet 1
    • Mini projet 2

Tous contenant le node_modulesdossier. Je veux que git ignore le dossier, peu importe où il part du dossier racine. Quelque chose comme ça à ajouter dans .gitignore:

*node_modules/*

Réponses:


748

Ajoute ça

node_modules/

dans un .gitignorefichier pour ignorer tous les répertoires appelés node_modulesdans le dossier actuel et tous les sous-dossiers


quel serait le chemin global pour faire de même pour le karma, exclut?
SuperUberDuper

7
Pour un modèle gitignore pour nodejs: github.com/github/gitignore/blob/master/Node.gitignore
Xavier Egea

8
Voir la réponse de @ AndrewSchreiber si vous avez déjà ajouté le dossier node_modules à git. Vous devrez le supprimer du cache avec "git rm -r --code node_modules".
Casper

176

Utilisez le one-liner universel dans le terminal dans le répertoire du projet:

touchez .gitignore && echo "node_modules /" >> .gitignore && git rm -r --cached node_modules; statut git

Cela fonctionne peu importe si vous en avez créé un .gitignoreou non, peu importe si vous avez ajouté node_modulesau suivi git ou non.

Ensuite, validez et appuyez sur les .gitignoremodifications.

Explication

touchgénérera le .gitignorefichier s'il n'existe pas déjà.

echoet >>s'ajoutera node_modules/à la fin de .gitignore, provoquant l' node_modulesignorance du dossier et de tous les sous-dossiers.

git rm -r --cachedsupprime le node_modulesdossier du contrôle git s'il a été ajouté auparavant. Sinon, cela affichera un avertissement pathspec 'node_modules' did not match any files, qui n'a aucun effet secondaire et que vous pouvez ignorer en toute sécurité. Les drapeaux font que la suppression est récursive et inclut le cache.

git statusaffiche les nouvelles modifications. Un changement à .gitignoreapparaîtra, tandis que node_modulesn'apparaîtra pas car il n'est plus suivi par git.


5
touchne devrait pas être nécessaire ici: >>créera le fichier s'il n'existe pas.
lionello

touchest nécessaire. >>reviendra no such file or directory: .gitignoreautrement.
Andrew Schreiber

1
Hmm, semble différer d'un OS à l'autre
lionello

macOS ne semble pas avoir besoin de toucher
Carles Alcolea

echo "node_modules/" > .gitignoredevrait créer un nouveau fichier avec un contenu original, en >> ajoutant du texte à la fin du fichier spécifié existant
chrisz

28

Essayez de faire quelque chose comme ça

**/node_modules

** est utilisé pour un appel récursif dans l'ensemble du projet

Deux astérisques consécutifs **dans des modèles correspondant au nom de chemin complet peuvent avoir une signification particulière:

Un interligne **suivi d'une barre oblique signifie une correspondance dans tous les répertoires. Par exemple, fait **/foocorrespondre le fichier ou le répertoire foon'importe où, de la même manière que le modèle foo. **/foo/barcorrespond au fichier ou au répertoire barn'importe où directement sous le répertoire foo.

Un tiret /**correspond à tout à l'intérieur. Par exemple, abc/**correspond à tous les fichiers dans le répertoire abc, par rapport à l'emplacement du fichier .gitignore, avec une profondeur infinie.

Une barre oblique suivie de deux astérisques consécutifs, puis une barre oblique correspond à zéro ou plusieurs répertoires. Par exemple, les a/\**/bmatchs a/b, a/x/b, a/x/y/bet ainsi de suite.

Les autres astérisques consécutifs sont considérés comme invalides.

Référence


2
Ceci est la bonne réponse.
roi

Vous voulez expliquer pourquoi cette approche est meilleure que simplement node_modules/?
Tanckom

22

La première chose est avant tout d'ajouter un .gitignorefichier dans my-app. Comme dans l'image ci-dessous.

Placez .gitignore dans le dossier / répertoire parent de node_modules.

puis ajoutez ceci dans votre .gitignorefichier

/node_modules

Remarque

Vous pouvez également ajouter d'autres fichiers pour les ignorer et les pousser sur github. Voici quelques autres fichiers conservés dans .gitignore. Vous pouvez les ajouter en fonction de vos besoins. #est juste un moyen de commenter dans un fichier .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*

Pourquoi voudriez-vous ajouter une build au .gitignore?
Sebastian Nielsen

6
@SebastianNielsen La même raison pour laquelle nous ne suivons pas node_modules. Vous obtenez build / en compilant.
Daniel Foust

8

Créer un fichier .gitignore dans le dossier racine directement par l'éditeur de code ou par commande

Pour Mac et Linux

 toucher .gitignore 

Pour les fenêtres

 echo .gitignore 

ouvrir .gitignore déclarer un dossier ou un nom de fichier comme celui-ci / répertoire


4

L'ajout de la ligne ci-dessous dans .gitignore ignorera les modules de nœuds de l'ensemble du référentiel.

node_modules

entrez la description de l'image ici


1
Comment? Il ignorera uniquement le dossier node_modules dans le même dossier où le fichier .gitignore est présent
Rajendran Nadar

@RajendranNadar merci, j'essayais juste de comprendre cela moi-même.
Jack BeNimble

0

Ajoutez la ligne ci-dessous à votre .gitignore

*/node_modules/*

Cela ignorera tous les nœuds_modules dans votre répertoire actuel ainsi que le sous-répertoire.


Notez qu'il existe déjà une réponse acceptée à cette question. Veuillez modifier votre réponse pour vous assurer qu'elle améliore les autres réponses déjà présentes dans cette question.
hongsy

0

vous pouvez aussi le faire avec SVN / Tortoise git.

faites un clic droit sur node_modules -> Tortoise git -> ajouter à ignorer la liste.

Cela générera .gitIgnore pour vous et vous ne trouverez plus le dossier node_modules dans le transfert.


0
**node_modules

Ça marche pour moi

approche récursive pour ignorer tous les modules node_modules présents dans les sous-dossiers

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.