gulp globbing - jak oglądać wszystko poniżej katalogu


108

To dość głupie pytanie, ale tak naprawdę nie byłem w stanie znaleźć satysfakcjonującej odpowiedzi: Jak użyć gulp globbing, aby wybrać wszystkie pliki we wszystkich podkatalogach poniżej określonego katalogu?

Próbowałem:

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

Żaden z nich nie działa.

Odpowiedzi:


178

Wzorzec dla wszystkich plików we wszystkich katalogach to zwykle ./src/less/**/*.*lub ./src/less/**/*powinien działać.

Ogólnie rzecz biorąc, lepiej jest dopasować określone rozszerzenia plików - nawet jeśli wszystkie powinny być takie same - aby zapobiec przechwytywaniu plików systemowych lub innych śmieci. W takim przypadku możesz zrobić ./src/less/**/*.lesstylko dla .lessplików lub coś podobnego .src/less/**/*.{less,css}do obu .lessi .cssplików.

Witryna Grunt ma całkiem dobre referencje dla większości globalnych minimatchów. (Zarówno Grunt, jak i gulp używają minimatch , ponieważ jest to biblioteka glob dla prawie wszystkiego związanego z Node).

Byłoby miło dla łyka lub minimatchu mieć własne kompletne dokumenty, ale to dla ciebie open source.


Sprawdzę witrynę Grunt, dzięki. Punkt dotyczący plików systemowych ma zdecydowanie sens. Powodem, dla którego chcę, żeby był trochę luźniejszy, jest to, że używam go do zegarka.
Jehan

1
Jeśli jeszcze tego nie zrobiłeś, bardzo polecam naukę i korzystanie z gulp-watchmodułu do oglądania plików, ponieważ poradzi sobie również z obserwowaniem nowych plików. Konfiguracja wymaga trochę więcej pracy, ale warto, IMO.
OverZealous

8
Na przyszłość używam narzędzia ze strony globtester.com , używa ono minimatch, którego gulp używa poprzez node-glob. „glob odnosi się do składni node-glob lub może być bezpośrednią ścieżką do pliku”. (źródło: github.com/gulpjs/gulp/blob/master/docs/API.md ) „[node-glob] używa biblioteki minimatch do dopasowania.” (źródło: github.com/isaacs/node-glob )
Daniel Dropik

1

'./src/less/**'wydaje się działać. Mimo to, jeśli ktoś ma bardziej ostateczną listę wszystkich poleceń dotyczących globowania, byłbym szczęśliwy, mogąc zaakceptować twoją odpowiedź i dodać ją do dokumentacji. W tej chwili musisz przejść do dokumentacji jednego z podmodułów gulpa, który następnie wyświetli listę stron podręcznika. Dobrze byłoby mieć bezpośrednie odniesienie, szczególnie dla projektantów używających łyka.


1
gulp.watch('./build/**', ...)wydaje się (źle?) wyzwalać pewne zmiany w katalogu nadrzędnym (np. ./.git/). Dodając dodatkowy / * na koniec wydaje się uniknąć tego problemu: gulp.watch('./build/**/*', ...).
medmunds

@medmunds Znalazłem podobne wyniki. Glob MUSI kończyć się znakiem * lub określonym * .less. *. * nie będzie działać, ponieważ brakuje niczego bez rozszerzenia. Wydaje się, że zajmuje . i dopasuj używając dopasowania w stylu POSIX; co oznacza, że ​​jeśli plik nie zawiera „kropki”, nie będzie pasował. Być może powinien istnieć specjalny przypadek . jak . przez DIR w systemie Windows odpowiada „LICENCJA”, ale niestety ln *.*nie. Dwa różne znaczenia „ . ' jest smutne. *wydaje się robić to, czego potrzebujemy. . Glob prawdopodobnie nigdy nie jest tym, co twórca naprawdę chciał moim zdaniem i może wymagać rzucenia ostrzeżenia.
Andrew T Finnell

@filthy_wizard - **jest rekurencyjny.
Steven Ventimiglia
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.