Git - Ігнорувати папку node_modules скрізь


367

У мене є проект, що містить безліч інших проектів:

  • Основний проект
    • Міні-проект 1
    • Міні-проект 2

Все, що містить node_modulesпапку. Я хочу, щоб git ігнорував папку незалежно від того, де вона починається з кореневої папки. Щось подібне додати в .gitignore:

*node_modules/*

Відповіді:


747

Додайте це

node_modules/

щоб .gitignoreігнорувати всі каталоги, що викликаються node_modulesу поточній папці та будь-які підпапки


який би глобальний шлях, щоб зробити те ж саме для карми, виключає?
SuperUberDuper

7
Для шаблону gitignore для nodejs: github.com/github/gitignore/blob/master/Node.gitignore
Xavier Egea

8
Дивіться відповідь @ AndrewSchreiber, якщо ви раніше додавали папку node_modules до git. Вам потрібно буде видалити його з кеша за допомогою "git rm -r - кешованих node_modules".
Каспер

176

Використовуйте універсальний однолінійний термінал у терміналі в каталозі проекту:

торкніться .gitignore && echo "node_modules /" >> .gitignore && git rm -r - кешований node_modules; git статус

Це працює незалежно від того, створили ви це .gitignoreчи ні, незалежно від того, додали ви node_modulesдо відстеження git чи ні.

Потім виконайте .gitignoreзміни та натисніть на зміни.

Пояснення

touchбуде генерувати .gitignoreфайл, якщо він ще не існує.

echoі >>додасться node_modules/в кінці .gitignore, що призведе node_modulesдо ігнорування папки та всіх папок.

git rm -r --cachedвидаляє node_modulesпапку з керування git, якщо вона була додана раніше. В іншому випадку це покаже попередження pathspec 'node_modules' did not match any files, яке не має побічних ефектів, і його можна сміливо ігнорувати. Прапори призводять до видалення рекурсивного характеру і містять кеш-пам'ять.

git statusвідображає нові зміни. Зміна .gitignoreз’явиться, але node_modulesне з’явиться, оскільки її більше не відстежують git.


5
touchтут не повинно бути необхідним: >>створить файл, якщо його не існує.
Ліонелло

touchпотрібен. >>повернеться no such file or directory: .gitignoreінакше.
Ендрю Шрайбер

1
Гм, схоже, відрізняється від ОС до ОС
Ліонелло

macOS, здається, не потребує дотику
Карлес Альколея

echo "node_modules/" > .gitignoreслід створити новий файл з оригінальним вмістом, використовуючи >> додавання тексту в кінці наявного вказаного файлу
chrisz

28

Спробуйте зробити щось подібне

**/node_modules

** використовується для рекурсивного дзвінка у всьому проекті

Два послідовних зірочки **в шаблонах, сумісних із повним іменем шляху, можуть мати особливе значення:

Ведучий, **за яким слід нахил, означає збіг у всіх каталогах. Наприклад, **/fooвідповідає файлу чи каталогу в fooбудь-якому місці, те саме, що і шаблон foo. **/foo/barвідповідає файлу чи каталогу в barбудь-якому місці, що знаходиться безпосередньо під каталогом foo.

Слід /**відповідає всім всередині. Наприклад, abc/**відповідає всім файлам, що знаходяться всередині каталогу abc, щодо розташування файлу .gitignore, з нескінченною глибиною.

Коса коса риса слідує за двома послідовними зірочками, після чого коса риса відповідає нулю або більше каталогів. Наприклад, a/\**/bматчі a/b, a/x/b, a/x/y/bі так далі.

Інші поспіль зірочки вважаються недійсними.

Довідково


2
Це правильна відповідь.
король

Хочете пояснити, чому такий підхід кращий, ніж просто node_modules/?
Танкем

22

Перше і головне - додати .gitignoreфайл у свій додаток. Як на зображенні нижче.

Помістіть .gitignore в батьківську папку / каталог node_modules.

а потім додайте це у свій .gitignoreфайл

/node_modules

Примітка

Ви також можете додавати інші файли, щоб ігнорувати їх, щоб їх натискати на github. Ось ще кілька файлів, що зберігаються у .gitignore. Ви можете додати їх відповідно до вашої вимоги. #це лише спосіб коментувати файл .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*

Чому б ви додали збірку до .gitignore?
Себастьян Нільсен

6
@SebastianNielsen З тієї ж причини, що ми не відстежуємо node_modules. Ви отримуєте збірку / шляхом складання.
Даніель Фуст

8

Створіть .gitignore файл у кореневій папці безпосередньо редактором коду чи командою

Для Mac та Linux

 торкнутися .gitignore 

Для Windows

 echo .gitignore 

відкрити .gitignore оголосити назву папки або файлу, як це / ім'я папки


4

Додавання нижче рядка в .gitignore буде ігнорувати модулі вузлів з усього сховища.

node_modules

введіть тут опис зображення


1
Як? Він буде ігнорувати папку node_modules лише в тій самій папці, де є файл .gitignore
Rajendran Nadar

@RajendranNadar дякую, я просто намагався зрозуміти це сам.
Джек Бенімбл

0

Додайте нижче рядка до свого .gitignore

*/node_modules/*

Це ігнорує всі node_modules у вашому поточному каталозі, а також підкаталог.


Зауважте, що відповідь на це питання вже є. Будь ласка, відредагуйте свою відповідь, щоб переконатися, що вона покращилася стосовно інших відповідей, вже наявних у цьому запитанні.
hongsy

0

ви можете це робити і з SVN / Turtoise git.

клацніть правою кнопкою миші на node_modules -> Черепаха git -> додати до списку ігнорування.

Це створить для вас .gitIgnore, і ви не знайдете папку node_modules в постановці знову.


0
**node_modules

Це працює для мене

рекурсивний підхід до ігнорування всіх node_модулів, наявних у підпапках

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.