gulp globbing- วิธีดูทุกอย่างด้านล่างไดเรกทอรี


108

นี่คือคำถามโง่สวย แต่ผมยังไม่ได้รับจริงๆสามารถที่จะหาคำตอบที่น่าพอใจ: ฉันจะใช้อึก globbing เพื่อเลือกวิธีทุกไฟล์ในทุกไดเรกทอรีย่อยด้านล่างไดเรกทอรีหนึ่ง?

ฉันพยายามแล้ว:

'./src/less' './src/less/' './src/less/*'

ดูเหมือนจะไม่ได้ผล

คำตอบ:


178

รูปแบบสำหรับไฟล์ทั้งหมดภายใต้ไดเรกทอรีทั้งหมดมักจะเป็น./src/less/**/*.*หรือ./src/less/**/*อย่างใดอย่างหนึ่งควรใช้งานได้

โดยทั่วไปแล้วการจับคู่นามสกุลไฟล์ที่เฉพาะเจาะจงจะดีกว่าแม้ว่าจะควรจะเหมือนกันทั้งหมดก็ตามเพื่อป้องกันการดึงไฟล์ระบบหรือขยะอื่น ๆ ในกรณีนี้คุณสามารถทำได้./src/less/**/*.lessเพียงแค่.lessไฟล์หรือบางอย่างเช่น.src/less/**/*.{less,css}สำหรับทั้งสอง.lessและ.cssไฟล์

เว็บไซต์ Gruntมีข้อมูลอ้างอิงที่ค่อนข้างดีสำหรับกลุ่มมินิแมตช์ส่วนใหญ่ (ทั้ง Grunt และ gulp ใช้มินิแมทช์เนื่องจากเป็นไลบรารีลูกโลกสำหรับทุกสิ่งที่เกี่ยวข้องกับโหนด)

มันจะเป็นการดีที่จะมีอึกหรือมินิแมตช์ที่จะมีเอกสารที่สมบูรณ์ของตัวเอง แต่นั่นเป็นโอเพ่นซอร์สสำหรับคุณ


ฉันจะตรวจสอบเว็บไซต์ Grunt ขอบคุณ ประเด็นเกี่ยวกับไฟล์ระบบนั้นสมเหตุสมผลอย่างแน่นอน เหตุผลที่ฉันอยากให้มันดูขี้เกียจหน่อยก็เพราะว่าฉันใช้มันเพื่อดู
Jehan

1
หากคุณยังไม่ได้ดำเนินการขอแนะนำให้เรียนรู้และใช้gulp-watchโมดูลนี้เพื่อดูไฟล์เนื่องจากสามารถจัดการกับการดูไฟล์ใหม่ได้เช่นกัน ตั้งค่าได้อีกเล็กน้อย แต่ก็คุ้มค่า IMO
OverZealous

8
สำหรับการอ้างอิงในอนาคตฉันใช้เครื่องมือที่globtester.comซึ่งใช้ minimatch ซึ่ง gulp ใช้โดย node-glob "glob หมายถึงไวยากรณ์ของ node-glob หรืออาจเป็นเส้นทางของไฟล์โดยตรง" (ที่มา: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-glob] ใช้มินิแมตช์ไลบรารีเพื่อทำการจับคู่" (ที่มา: github.com/isaacs/node-glob )
Daniel Dropik

1

'./src/less/**'ดูเหมือนจะได้ผล อย่างไรก็ตามหากมีใครมีรายการคำสั่ง globbing ที่ชัดเจนมากขึ้นฉันยินดีที่จะยอมรับคำตอบของคุณและเพิ่มลงในเอกสารอึก ตอนนี้คุณต้องไปที่เอกสารสำหรับโมดูลย่อยของอึกหนึ่งซึ่งจะให้รายการการจัดการ จะเป็นการดีหากมีการอ้างอิงโดยตรงโดยเฉพาะอย่างยิ่งสำหรับนักออกแบบที่ใช้อึก


1
gulp.watch('./build/**', ...)ดูเหมือนจะทริกเกอร์ (mis?) สำหรับการเปลี่ยนแปลงบางอย่างใน ไดเร็กทอรีหลัก (เช่น ./.git/) เพิ่มพิเศษ / * gulp.watch('./build/**/*', ...)ที่สิ้นสุดดูเหมือนว่าจะหลีกเลี่ยงปัญหาที่:
medmunds

@medmunds ฉันพบผลลัพธ์ที่คล้ายกัน ลูกโลกต้องลงท้ายด้วย * หรือเฉพาะ * .less *. * จะไม่ทำงานเนื่องจากพลาดสิ่งใดโดยไม่มีส่วนขยาย ดูเหมือนว่าจะใช้. และจับคู่โดยใช้การจับคู่สไตล์ POSIX; หมายความว่าหากไฟล์ไม่มี "จุด" อยู่ในไฟล์ไฟล์นั้นจะไม่ตรงกัน บางที there_ought_ อาจเป็นกรณีพิเศษสำหรับ. เป็น. ผ่าน DIR บน Windows ตรงกับ 'LICENSE' แต่น่าเสียดายที่ln *.*ไม่ สองความหมายที่แตกต่างกันไป ' ' เป็นเรื่องน่าเศร้า. *ดูเหมือนจะทำในสิ่งที่เราต้องการ ก. glob อาจไม่เคยเป็นสิ่งที่นักพัฒนาตั้งใจจริงในความคิดของฉันและอาจต้องการคำเตือน
Andrew T Finnell

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