Git - ข้ามโฟลเดอร์ node_modules ไปทุกที่


367

ฉันมีโครงการที่มีหลายโครงการ:

  • โครงการหลัก
    • โครงการขนาดเล็ก 1
    • โครงการขนาดเล็ก 2

node_modulesโฟลเดอร์ที่มีทั้งหมด ฉันต้องการให้คอมไพล์เพิกเฉยต่อโฟลเดอร์ไม่ว่าจะเริ่มจากโฟลเดอร์รูท สิ่งนี้เพื่อเพิ่มใน. gignignore:

*node_modules/*

คำตอบ:


747

เพิ่มสิ่งนี้

node_modules/

เป็น.gitignoreไฟล์ที่จะไม่สนใจไดเรกทอรีทั้งหมดที่เรียกว่าnode_modulesในโฟลเดอร์ปัจจุบันและโฟลเดอร์ย่อยใด ๆ


เส้นทาง glob จะทำเช่นเดียวกันกับกรรมจะแยกได้อย่างไร?
SuperUberDuper

7
สำหรับเทมเพลต gitignore สำหรับ nodejs: github.com/github/gitignore/blob/master/Node.gitignore
Xavier Egea

8
ดูคำตอบของ @ AndrewSchreiber หากคุณได้เพิ่มโฟลเดอร์ node_modules ไปยัง git ก่อนหน้านี้ คุณจะต้องลบออกจากแคชด้วย "git rm -r --code node_modules"
Casper

176

ใช้universal one-linerใน terminal ในไดเรกทอรีโครงการ:

แตะ. gitignore && echo "node_modules /" >> .gitignore && git rm -r - แคช node_modules; สถานะคอมไพล์

มันใช้งานได้ไม่ว่าคุณจะสร้าง.gitignoreหรือไม่ก็ตามไม่ว่าคุณจะเพิ่มnode_modulesการติดตามคอมไพล์หรือไม่ก็ตาม

จากนั้นส่งและรับ.gitignoreการเปลี่ยนแปลง

คำอธิบาย

touchจะสร้าง.gitignoreไฟล์หากยังไม่มีอยู่

echoและ>>จะผนวกต่อnode_modules/ท้าย.gitignoreทำให้node_modulesโฟลเดอร์และโฟลเดอร์ย่อยทั้งหมดถูกละเว้น

git rm -r --cachedลบnode_modulesโฟลเดอร์ออกจากการควบคุมคอมไพล์ถ้ามันถูกเพิ่มก่อน มิฉะนั้นจะแสดงคำเตือนpathspec 'node_modules' did not match any filesซึ่งไม่มีผลข้างเคียงและคุณสามารถเพิกเฉยได้อย่างปลอดภัย แฟล็กทำให้การลบซ้ำและรวมถึงแคช

git statusแสดงการเปลี่ยนแปลงใหม่ การเปลี่ยนแปลงที่.gitignoreจะปรากฏขึ้นในขณะที่node_modulesจะไม่ปรากฏขึ้นเนื่องจากไม่มีการติดตามโดย git


5
touchไม่จำเป็นที่นี่: >>จะสร้างไฟล์หากไม่มีอยู่
lionello

touchมันจำเป็น. >>จะกลับมาเป็นno such file or directory: .gitignoreอย่างอื่น
Andrew Schreiber

1
อืมดูเหมือนว่าจะแตกต่างจากระบบปฏิบัติการกับระบบปฏิบัติการ
lionello

macOS ดูเหมือนไม่จำเป็นต้องได้รับการสัมผัส
Carles Alcolea

echo "node_modules/" > .gitignoreควรสร้างใหม่ไฟล์ที่มีเนื้อหาต้นฉบับใช้>> ผนวกข้อความลงบนจุดสิ้นสุดของที่มีอยู่ระบุไฟล์
chrisz

28

ลองทำอะไรแบบนี้

**/node_modules

** ใช้สำหรับการโทรซ้ำในโครงการทั้งหมด

เครื่องหมายดอกจันสองตัวติดต่อกัน**ในรูปแบบที่จับคู่กับชื่อพา ธ เต็มอาจมีความหมายพิเศษ:

คำนำหน้า**ตามด้วยเครื่องหมายทับหมายความว่าตรงกันในไดเรกทอรีทั้งหมด ยกตัวอย่างเช่น**/fooตรงกับแฟ้มหรือไดเรกทอรีที่ใดก็ได้เช่นเดียวกับรูปแบบfoo ตรงกับแฟ้มหรือไดเรกทอรีที่ใดก็ได้ที่เป็นโดยตรงภายใต้ไดเรกทอรีfoo**/foo/barbarfoo

ส่วนท้ายนั้น/**ตรงกับทุกสิ่งภายใน ตัวอย่างเช่นabc/**จับคู่ไฟล์ทั้งหมดภายในไดเรกทอรีabcเทียบกับตำแหน่งของไฟล์. gitignore ที่มีความลึกไม่ จำกัด

เครื่องหมายทับแล้วตามด้วยเครื่องหมายดอกจันสองตัวต่อจากนั้นเครื่องหมายทับจะจับคู่ไดเรกทอรีตั้งแต่ศูนย์ขึ้นไป ยกตัวอย่างเช่นa/\**/bการแข่งขันa/b, a/x/b, a/x/y/bและอื่น ๆ

เครื่องหมายดอกจันอื่น ๆ ที่ต่อเนื่องกันถือว่าไม่ถูกต้อง

การอ้างอิง


2
นี่คือคำตอบที่ถูกต้อง
กษัตริย์

สนใจที่จะอธิบายว่าทำไมวิธีนี้ดีกว่าเพียงnode_modules/?
Tanckom

22

สิ่งแรกที่สำคัญที่สุดคือการเพิ่ม.gitignoreไฟล์ในแอพของฉัน ชอบในภาพด้านล่าง

วาง. gitignore ในโฟลเดอร์พาเรนต์ / ไดเร็กทอรีของ node_modules

และเพิ่ม.gitignoreไฟล์ต่อไปในไฟล์ของคุณ

/node_modules

บันทึก

นอกจากนี้คุณยังสามารถเพิ่มไฟล์อื่น ๆ ด้วยเพื่อเพิกเฉยต่อไฟล์เหล่านั้นที่จะถูกพุชด้วย github นี่คือไฟล์บางส่วนที่เก็บไว้ใน. gitignore คุณสามารถเพิ่มพวกเขาตามความต้องการของคุณ #เป็นเพียงวิธีในการแสดงความคิดเห็นในไฟล์. gignignore

# 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 คุณได้รับการสร้าง / โดยการรวบรวม
Daniel Foust

8

สร้างไฟล์. gignignoreในรูทโฟลเดอร์โดยตรงโดยโปรแกรมแก้ไขโค้ดหรือตามคำสั่ง

สำหรับ Mac & Linux

 แตะ. gignignore 

สำหรับ Windows

 echo .gignignore 

เปิด. gitignoreประกาศโฟลเดอร์หรือชื่อไฟล์เช่นนี้/ foldername


4

การเพิ่มบรรทัดด้านล่างใน. gitignore จะไม่สนใจโมดูลโหนดจากที่เก็บทั้งหมด

node_modules

ป้อนคำอธิบายรูปภาพที่นี่


1
อย่างไร? ซึ่งจะละเว้นโฟลเดอร์ node_modules ในโฟลเดอร์เดียวกับที่มีไฟล์. gitignore
Rajendran Nadar

@RajendranNadar ขอบคุณฉันแค่พยายามคิดออกเอง
Jack BeNimble

0

เพิ่มบรรทัดด้านล่างลงใน. gitignore ของคุณ

*/node_modules/*

สิ่งนี้จะละเว้น node_modules ทั้งหมดในไดเรกทอรีปัจจุบันของคุณเช่นเดียวกับไดเรกทอรีย่อย


โปรดทราบว่ามีคำตอบสำหรับคำถามนี้แล้ว โปรดแก้ไขคำตอบของคุณเพื่อให้แน่ใจว่าจะได้รับการปรับปรุงตามคำตอบอื่น ๆ ที่มีอยู่แล้วในคำถามนี้
hongsy

0

คุณสามารถทำได้ด้วย SVN / Tortoise git เช่นกัน

เพียงคลิกขวาที่ node_modules -> Tortitise git -> เพิ่มเพื่อละเว้นรายการ

สิ่งนี้จะสร้าง. gitIgnore ให้กับคุณและคุณจะไม่พบโฟลเดอร์ node_modules ในการจัดเตรียมอีกครั้ง


0
**node_modules

มันใช้งานได้สำหรับฉัน

วิธีการเรียกซ้ำเพื่อละเว้น node_modules ทั้งหมดที่มีอยู่ในโฟลเดอร์ย่อย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.