Git - Abaikan folder node_modules di mana-mana

368

Saya memiliki proyek yang berisi beberapa proyek lain:

  • Proyek utama
    • Proyek mini 1
    • Proyek mini 2

Semua node_modulesfolder yang berisi . Saya ingin git mengabaikan folder itu di mana pun itu dimulai dari folder root. Sesuatu seperti ini untuk ditambahkan .gitignore:

*node_modules/*
Mehdiway
sumber

Jawaban:

748

Tambahkan ini

node_modules/

ke .gitignorefile untuk mengabaikan semua direktori yang dipanggil node_modulesdalam folder saat ini dan subfolder

Alik
sumber
apa jalan glob untuk melakukan hal yang sama untuk karma, tidak termasuk?
SuperUberDuper
7
Untuk templat gitignore untuk nodejs: github.com/github/gitignore/blob/master/Node.gitignore
Xavier Egea
8
Lihat jawaban @ AndrewSchreiber jika sebelumnya Anda telah menambahkan folder node_modules ke git. Anda harus menghapusnya dari cache dengan "git rm -r --cached node_modules".
Casper
176

Gunakan universal one-liner di terminal dalam direktori proyek:

sentuh .gitignore && echo "node_modules /" >> .gitignore && git rm -r --cached node_modules; status git

Ini berfungsi tidak masalah apakah Anda telah membuat .gitignoreatau tidak, tidak peduli apakah Anda telah menambahkan node_moduleske pelacakan git atau tidak.

Kemudian komit dan dorong .gitignore perubahan.

Penjelasan

touch akan menghasilkan .gitignore file jika belum ada.

echodan >>akan ditambahkan node_modules/pada akhir .gitignore, menyebabkannode_modules folder dan semua subfolder diabaikan.

git rm -r --cachedmenghapus node_modulesfolder dari kontrol git jika sudah ditambahkan sebelumnya. Jika tidak, ini akan menampilkan peringatanpathspec 'node_modules' did not match any files , yang tidak memiliki efek samping dan Anda dapat dengan aman mengabaikannya. Bendera menyebabkan penghapusan menjadi rekursif dan menyertakan cache.

git statusmenampilkan perubahan baru. Perubahan ke .gitignoreakan muncul, sementara node_modulestidak akan muncul karena tidak lagi dilacak oleh git.

Andrew Schreiber
sumber
5
touchtidak perlu di sini: >>akan membuat file jika tidak ada.
lionello
touchdibutuhkan. >>akan kembali no such file or directory: .gitignoresebaliknya.
Andrew Schreiber
1
Hmm, tampaknya berbeda dari OS ke OS
lionello
macOS tampaknya tidak perlu disentuh
Carles Alcolea
echo "node_modules/" > .gitignoreharus membuat file baru dengan konten asli, menggunakan >> menambahkan teks ke akhir file yang ditentukan yang sudah ada
chrisz
28

Coba lakukan sesuatu seperti ini

**/node_modules

** digunakan untuk panggilan rekursif di seluruh proyek

Dua tanda bintang berturut-turut **dalam pola yang cocok dengan pathname penuh mungkin memiliki arti khusus:

Pimpinan **diikuti oleh garis miring berarti kecocokan di semua direktori. Misalnya, **/foococok dengan file atau direktori di foomana saja, sama seperti pola foo. **/foo/barcocok dengan file atau direktori di barmana saja yang langsung di bawah direktorifoo .

Trailing /**cocok dengan semua yang ada di dalamnya. Misalnya, abc/**cocok dengan semua file di dalam direktori abc, relatif terhadap lokasi file .gitignore, dengan kedalaman tak hingga.

Garis miring diikuti oleh dua tanda bintang berturut-turut kemudian garis miring cocok dengan nol atau lebih direktori. Misalnya, a/\**/bpertandingan a/b, a/x/b, a/x/y/bdan sebagainya.

Tanda bintang berturut-turut dianggap tidak valid.

Referensi

Rajendran Nadar
sumber
2
Ini jawaban yang benar.
raja
Mau jelaskan mengapa pendekatan ini lebih baik dari sekadar node_modules/?
Tanckom
22

Hal pertama dan terpenting adalah menambahkan .gitignorefile di aplikasi saya. Seperti pada gambar di bawah ini.

Letakkan .gitignore di folder induk / direktori node_modules.

dan selanjutnya tambahkan ini di .gitignorefile Anda

/node_modules

Catatan

Anda juga dapat menambahkan file lain juga untuk mengabaikannya untuk didorong di github. Berikut adalah beberapa file lainnya yang disimpan di .gitignore. Anda dapat menambahkannya sesuai dengan kebutuhan Anda. #hanyalah cara untuk berkomentar dalam 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*
Mustkeem K
sumber
Mengapa Anda menambahkan build ke .gitignore?
Sebastian Nielsen
6
@SebastianNielsen Alasan yang sama kami tidak melacak node_modules. Anda mendapatkan build / compile.
Daniel Foust
8

Buat .gitignore file di folder root langsung oleh editor kode atau dengan perintah

Untuk Mac & Linux

 sentuh .gitignore 

Untuk Windows

 gema. gitignore 

buka .gitignore mendeklarasikan folder atau nama file seperti ini / nama pengguna

Amit Kumar
sumber
4

Menambahkan baris berikut di .gitignore akan mengabaikan modul simpul dari seluruh repositori.

node_modules

masukkan deskripsi gambar di sini

Umesh Khurana
sumber
1
Bagaimana? Itu hanya akan mengabaikan folder node_modules di folder yang sama di mana file .gitignore ada
Rajendran Nadar
@RajendranNadar terima kasih, saya hanya mencoba mencari tahu sendiri.
Jack BeNimble
0

Tambahkan baris di bawah ini ke .gitignore Anda

*/node_modules/*

Ini akan mengabaikan semua node_modules di direktori Anda saat ini serta subdirektori.

Manish Dubey
sumber
Perhatikan bahwa sudah ada jawaban yang diterima untuk pertanyaan ini. Harap edit jawaban Anda untuk memastikannya meningkatkan jawaban lain yang sudah ada dalam pertanyaan ini.
hongsy
0

Anda dapat melakukannya dengan SVN / Tortoise git juga.

cukup klik kanan pada node_modules -> Tortoise git -> tambahkan ke daftar abaikan.

Ini akan menghasilkan .gitIgnore untuk Anda dan Anda tidak akan menemukan folder node_modules dalam pementasan lagi.

Dhruvesh Patel
sumber
0
**node_modules

Ini bekerja untuk saya

pendekatan rekursif untuk mengabaikan semua node_modules yang ada di sub folder

Hanzla Habib
sumber