gulp globbing - как смотреть все, что находится ниже каталога

108

Это довольно глупый вопрос, но я не смог найти удовлетворительного ответа: как мне использовать gulp globbing для выбора всех файлов во всех подкаталогах ниже определенного каталога?

Я пробовал:

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

Кажется, что ни один из них не работает.

Jehan
источник

Ответы:

178

Шаблон для всех файлов во всех каталогах обычно работает ./src/less/**/*.*либо ./src/less/**/*, либо.

Вообще говоря, лучше сопоставить определенные расширения файлов - даже если они все должны быть одинаковыми - чтобы предотвратить захват системных файлов или другого мусора. В этом случае вы можете делать ./src/less/**/*.lessтолько .lessфайлы или что-то вроде .src/less/**/*.{less,css}обоих .lessи .cssфайлов.

На веб-сайте Grunt есть довольно хорошие ссылки для большинства глобусов миниматчей. (И Grunt, и gulp используют minimatch , поскольку это библиотека glob почти для всего, что связано с Node.)

Было бы неплохо, если бы gulp или minimatch имели свои собственные полные документы, но это открытый исходный код для вас.

Чрезмерно рьяный
источник
Я проверю сайт Grunt, спасибо. Точка зрения о системных файлах определенно имеет смысл. Причина, по которой я хочу, чтобы он был немного послабее, заключается в том, что я использую его для часов.
Jehan
1
Если вы еще этого не сделали, я настоятельно рекомендую изучить и использовать gulp-watchмодуль для просмотра файлов, потому что он также может обрабатывать отслеживание новых файлов. Это немного больше работы для настройки, но оно того стоит, ИМО.
OverZealous
8
Для справки в будущем я использую инструмент на globtester.com , он использует minimatch, которое gulp использует через node-glob. «glob относится к синтаксису node-glob или может быть прямым путем к файлу». (источник: github.com/gulpjs/gulp/blob/master/docs/API.md ) "[node-glob] использует библиотеку Minimatch для сопоставления." (источник: github.com/isaacs/node-glob )
Даниэль Дропик
1

'./src/less/**'вроде работает. Тем не менее, если у кого-то есть более полный список всех команд подстановки, я был бы рад принять ваш ответ и добавить его в документацию gulp. Прямо сейчас вам нужно перейти к документации для одного из подмодулей gulp, который затем предоставит вам список страниц руководства. Было бы хорошо иметь прямую ссылку, особенно для дизайнеров, использующих gulp.

Jehan
источник
1
gulp.watch('./build/**', ...)кажется (неправильно?) запускает некоторые изменения в родительском каталоге (например, ./.git/). Добавление дополнительной / * на конце , кажется, избежать этой проблемы: gulp.watch('./build/**/*', ...).
medmunds 02
@medmunds Я нашел похожие результаты. Глобус ДОЛЖЕН заканчиваться * или конкретным * .less. *. * не будет работать, поскольку он ничего не пропустит без расширения. Кажется, берет . и сопоставление с использованием сопоставления стилей POSIX; это означает, что если в файле нет «точки», он не будет совпадать. Возможно, это - должно быть особым случаем . как . via DIR в Windows соответствует "LICENSE", но, к сожалению ln *.*, нет. Два разных значения ' . ' печально. *кажется, делает то, что нам нужно. . По моему мнению, glob, вероятно, никогда не является тем, что на самом деле имел в виду разработчик, и может потребоваться предупреждение.
Эндрю Т. Финнелл,
@filthy_wizard - **рекурсивный.
Стивен Вентимилья