ทำไม gulp.src ไม่ชอบที่จะส่งต่ออาร์เรย์ของพา ธ ที่สมบูรณ์ไปยังไฟล์


94

ฉันกำลังพยายามส่ง gulp.src อาร์เรย์ของไฟล์ที่ฉันต้องการให้จัดการ นี่คืออาร์เรย์ตามที่ระบุ

['bower_components/jquery/jquery.js',
 'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
 'bower_components/superscrollorama/jquery.superscrollorama.js' ]

ฉันพบว่า gulp.src นั้นดูเหมือนจะไม่เป็นเช่นนั้นและองค์ประกอบที่สามไม่ได้ผ่านเข้าสู่ปลายทางสุดท้าย

ฉันพบว่าทุกอย่างทำงานได้ดีเมื่อฉันแนะนำอักขระตัวแทนเช่นนี้:

['bower_components/**/jquery.js',
 'bower_components/**/js/greensock/TweenMax.min.js',
 'bower_components/**/jquery.superscrollorama.js' ]

แต่ทำไม? จะทำอย่างไรกับวิธีการทำงานของ globbing? ฉัน googled แต่หาไม่เจอ

บางทีนี่อาจไม่ใช่จุดประสงค์ของการโกลว แต่มันไม่สมเหตุสมผลสำหรับฉันที่ควรจะทำงานในลักษณะนี้ ใครช่วยส่องบ้าง

คำตอบ:


163

เมื่อคุณส่งต่อในอาร์เรย์ของพา ธ แบบเต็มไฟล์แต่ละไฟล์จะถูกประมวลผลแยกกัน ลูกโลกไม่รู้ว่ารากของเส้นทางอยู่ที่ใด (อันที่จริงมันเดาตามลูกโลกแรก) ดังนั้นแต่ละไฟล์จะถูกรูทในโฟลเดอร์ที่มีและพา ธ สัมพัทธ์ว่างเปล่า

อย่างไรก็ตามมีวิธีง่ายๆ ส่งผ่านวัตถุที่มีคีย์baseเป็นอาร์กิวเมนต์ที่สองgulp.srcและทุกอย่างจะมีเส้นทางสัมพัทธ์ที่ถูกต้อง:

return gulp.src(['bower_components/jquery/jquery.js',
                'bower_components/superscrollorama/js/greensock/TweenMax.min.js',
                'bower_components/superscrollorama/jquery.superscrollorama.js' ],
            {base: 'bower_components/'})
        .pipe(...);

23
นอกจากนี้: สิ่งนี้ไม่ได้กล่าวถึงในเอกสารอึกเลยคุณต้องคลิกผ่านไปที่เอกสารglob-streamเพื่อดูสิ่งนี้
OverZealous

9
จะเกิดอะไรขึ้นถ้าเส้นทางทั้งหมดไม่มีฐานเดียวกัน? ฉันมีคำถามที่คล้ายกันเปิดอยู่สำหรับสถานการณ์นั้น: gulp src ไม่ได้อ่านค่าอาร์เรย์ของไฟล์ json ที่ต้องการ
Andre

1
คำถามเดียวกันจากด้านข้างของฉัน ฉันมีสองฐานที่แตกต่างกันสำหรับงานที่ฉันต้องเรียกใช้
Cynthia Sanchez

4
อาจมีฐานทั่วไปอยู่ที่ใดที่หนึ่งในระบบไฟล์ใช่ไหม? "/"แม้ว่าจะเป็น หากอึกกำลังทำงานจากรากของโครงการของคุณคุณเพียงระบุ dir ปัจจุบันเป็นฐานและต่อท่อไปยัง dir ปัจจุบัน gulp.src(mixed, {base: "."}).pipe(doStuff).pipe(dest("."))
ตัวเลข 1311407
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.