gulp globbing- cara melihat semua yang ada di bawah direktori

108

Ini adalah pertanyaan yang cukup bodoh, tetapi saya belum benar-benar dapat menemukan jawaban yang memuaskan: Bagaimana cara menggunakan gulp globbing untuk memilih semua file di semua subdirektori di bawah direktori tertentu?

Saya sudah mencoba:

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

Tak satu pun dari mereka tampaknya berhasil.

Jehan
sumber

Jawaban:

178

Pola untuk semua file di bawah semua direktori biasanya ./src/less/**/*.*atau ./src/less/**/*, seharusnya berfungsi.

Secara umum, lebih baik mencocokkan ekstensi file tertentu - meskipun semuanya harus sama - untuk mencegah pengambilan file sistem atau sampah lainnya. Dalam hal ini, Anda dapat melakukannya ./src/less/**/*.lesshanya untuk .lessfile, atau sesuatu seperti .src/less/**/*.{less,css}untuk keduanya .lessdan .cssfile.

Situs web Grunt memiliki referensi yang cukup bagus untuk sebagian besar minimatch glob. (Baik Grunt maupun gulp menggunakan minimatch , karena ini adalah library glob untuk hampir semua hal yang terkait dengan Node.)

Akan menyenangkan jika gulp atau minimatch memiliki dokumen lengkap mereka sendiri, tapi itu open source untuk Anda.

Terlalu bersemangat
sumber
Saya akan memeriksa situs Grunt, terima kasih. Poin tentang file sistem pasti masuk akal. Alasan saya menginginkannya sedikit lebih longgar adalah karena saya menggunakannya untuk jam tangan.
Jehan
1
Jika Anda belum melakukannya, saya sangat merekomendasikan mempelajari dan menggunakan gulp-watchmodul untuk menonton file, karena dapat menangani menonton file baru juga. Sedikit lebih banyak pekerjaan untuk disiapkan, tetapi sepadan, IMO.
OverZealous
8
Untuk referensi di masa mendatang, saya menggunakan alat di globtester.com , ini menggunakan minimatch, yang digunakan gulp dengan cara node-glob. "glob mengacu pada sintaks node-glob atau bisa juga berupa jalur file langsung." (sumber: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-glob] menggunakan perpustakaan minimatch untuk melakukan pencocokannya." (sumber: github.com/isaacs/node-glob )
Daniel Dropik
1

'./src/less/**'sepertinya berhasil. Namun, jika seseorang memiliki daftar yang lebih pasti dari semua perintah globbing, saya akan dengan senang hati menerima jawaban Anda dan menambahkannya ke dokumen gulp. Sekarang Anda harus pergi ke dokumen untuk salah satu submodul gulp, yang kemudian memberi Anda daftar halaman manual. Akan lebih baik jika memiliki referensi langsung, terutama untuk desainer yang menggunakan gulp.

Jehan
sumber
1
gulp.watch('./build/**', ...)tampaknya (salah?) memicu beberapa perubahan dalam direktori induk (misalnya, ./.git/). Menambahkan ekstra / * pada akhir tampaknya untuk menghindari masalah bahwa: gulp.watch('./build/**/*', ...).
medmunds
@medmunds Saya telah menemukan hasil yang serupa. Glob HARUS diakhiri dengan * atau * .less tertentu. *. * tidak akan berfungsi karena melewatkan apa pun tanpa ekstensi. Tampaknya mengambil . dan cocokkan menggunakan pencocokan gaya POSIX; artinya jika sebuah file tidak memiliki 'titik' di dalamnya, itu tidak akan cocok. Mungkin ada kasus khusus untuk . sebagai . via DIR pada Windows cocok dengan 'LICENSE', tapi sayangnya ln *.*tidak. Dua arti berbeda dengan ' . ' sedang sedih. *sepertinya melakukan apa yang kita butuhkan. A . Menurut saya, glob mungkin tidak pernah sesuai dengan keinginan developer dan mungkin perlu peringatan.
Andrew T Finnell
@filthy_wizard - **rekursif.
Steven Ventimiglia