gulp globbing- dizinin altındaki her şeyi nasıl izlerim


108

Bu oldukça aptalca bir soru, ancak tatmin edici bir cevap bulamadım: Belirli bir dizinin altındaki tüm alt dizinlerdeki tüm dosyaları seçmek için gulp globbing'i nasıl kullanabilirim ?

Denedim:

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

Hiçbiri işe yaramıyor gibi görünüyor.

Yanıtlar:


178

Tüm dizinler altındaki tüm dosyaların kalıbı genellikle ./src/less/**/*.*veya ./src/less/**/*ya çalışmalıdır.

Genel olarak konuşursak, sistem dosyalarının veya diğer gereksiz dosyaların yakalanmasını önlemek için belirli dosya uzantılarını eşleştirmek - hepsi aynı olsa bile - daha iyidir. Bu durumda, yapabileceğiniz ./src/less/**/*.lesssadece için .lessdosyaları veya benzeri bir şey .src/less/**/*.{less,css}her ikisi için .lessve .cssdosyaların.

Grunt web sitesinde , minimatch glob'ların çoğu için oldukça iyi bir referans var. (Hem Grunt hem de gulp , Node ile ilgili hemen hemen her şey için glob kitaplığı olduğu için minimatch kullanır .)

Bir yudum veya mini maç için kendi eksiksiz belgelerine sahip olmak güzel olurdu, ancak bu sizin için açık kaynak.


Grunt web sitesine bakacağım, teşekkürler. Sistem dosyalarıyla ilgili nokta kesinlikle mantıklı. Biraz daha gevşek olmasını istememin nedeni, onu izlemek için kullanmam.
Jehan

1
Henüz yapmadıysanız, gulp-watchdosyaları izlemek için modülü öğrenmenizi ve kullanmanızı şiddetle tavsiye ederim , çünkü yeni dosyaları da izleyebilir. Kurması biraz daha iş ama buna değer, IMO.
OverZealous

8
Gelecekte başvurmak için , globtester.com'da bir araç kullanıyorum , bu, gulp'un node-glob yoluyla kullandığı minimatch'i kullanıyor. "glob, düğüm-glob sözdizimini ifade eder veya doğrudan bir dosya yolu olabilir." (kaynak: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-glob], eşleşmesini yapmak için minimatch kitaplığını kullanıyor." (kaynak: github.com/isaacs/node-glob )
Daniel Dropik

1

'./src/less/**'işe yarıyor gibi görünüyor. Yine de, eğer birisi tüm globbing komutlarının daha kesin bir listesine sahipse, cevabınızı kabul etmekten ve yudum dokümanlarına eklemekten memnuniyet duyarım. Şu anda, gulp'un alt modüllerinden birinin dokümanlarına gitmeniz gerekiyor, bu da size bir yönetim sayfası listesi veriyor. Özellikle yudum kullanan tasarımcılar için doğrudan bir referansa sahip olmak iyi olur.


1
gulp.watch('./build/**', ...)üst dizindeki bazı değişiklikler için (örneğin, ./.git/) tetikleyici (yanlış?) görünüyor . Ekstra / * ucunda bu sorunu önlemek görünüyor ekleme: gulp.watch('./build/**/*', ...).
medmunds

@medmunds Benzer sonuçlar buldum. Glob, * veya belirli bir * .less ile bitmelidir. *. * bir uzantı olmadan hiçbir şeyi kaçırdığı için çalışmayacaktır. Görünüşe göre . ve POSIX stili eşleştirmeyi kullanarak eşleştirme; yani bir dosyada 'nokta' yoksa, eşleşmeyecektir. Belki de özel bir durum olması gerekiyordu . olarak . Windows üzerinde DIR üzerinden 'LICENSE' ile eşleşiyor, ancak ne yazık ki ln *.*eşleşmiyor. İki farklı anlam ' . 'üzücü. *ihtiyacımız olanı yapıyor gibi görünüyor. Bir . glob, muhtemelen hiçbir zaman geliştiricinin gerçekten amaçladığı şey değildir ve bence bir uyarıya ihtiyaç duyabilir.
Andrew T Finnell

@filthy_wizard - **özyinelemelidir.
Steven Ventimiglia
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.