Mengapa gulp.src tidak suka diteruskan serangkaian jalur lengkap ke file?

94

Saya mencoba untuk melewatkan gulp.src sebuah array file yang saya ingin tangani. Ini adalah larik sebagaimana berdiri.

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

Saya menemukan bahwa gulp.src sepertinya tidak seperti itu dan elemen ketiga tidak berhasil mencapai tujuan akhir.

Saya telah menemukan bahwa semuanya berfungsi dengan baik ketika saya memperkenalkan beberapa karakter wildcard seperti ini:

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

Tapi kenapa? Ada hubungannya dengan cara kerja globbing? Saya telah mencari di Google tetapi tidak dapat menemukannya.

Mungkin ini bukan tujuan globbing yang dimaksudkan tetapi tidak masuk akal bagi saya bahwa itu harus berfungsi seperti ini. Adakah yang bisa menjelaskan?

morganesque.dll
sumber

Jawaban:

162

Saat Anda meneruskan larik jalur lengkap, setiap file diproses secara independen. Globbing tidak tahu di mana akar jalurnya (sebenarnya, ia menebak berdasarkan gumpalan pertama). Oleh karena itu, setiap file di-root di folder di dalamnya, dan jalur relatif kosong.

Namun, ada solusi yang mudah. Meneruskan objek dengan kunci basesebagai argumen kedua gulp.src, dan semuanya akan memiliki jalur relatif yang benar:

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(...);
Terlalu bersemangat
sumber
23
Juga: Ini sama sekali tidak disebutkan dalam dokumen gulp, Anda harus mengklik ke dokumen untukglob-stream mencari tahu.
OverZealous
9
bagaimana jika jalur tidak semuanya memiliki basis yang sama? Saya memiliki pertanyaan serupa terbuka untuk skenario tertentu: gulp src tidak membaca nilai array file json yang diperlukan
Andre
1
pertanyaan yang sama dari sisi saya. Saya memiliki dua pangkalan berbeda untuk tugas yang harus saya jalankan
Cynthia Sanchez
4
Mungkin selalu ada basis yang sama di suatu tempat di sistem file, bukan? Bahkan jika itu "/". Jika gulp dijalankan dari root dir proyek Anda, Anda cukup menentukan dir saat ini sebagai basis, dan menyalurkan ke direktori saat ini. gulp.src(mixed, {base: "."}).pipe(doStuff).pipe(dest("."))
nomor 1311407