Объяснение Globs#
Glob - это строка буквенных символов и/или подстановочных знаков, используемых для сопоставления путей к файлам. Globbing - это поиск файлов в файловой системе с помощью одного или нескольких globs.
Метод src() ожидает, что одна глобальная строка или массив глобов определят, с какими файлами будет работать ваш конвейер. Для ваших глобов должно быть найдено хотя бы одно совпадение, иначе src() выдаст ошибку. Когда используется массив глобов, они сопоставляются в порядке массива, что особенно полезно для отрицательных глобов.
Сегменты и разделители#
Сегмент - это все, что находится между разделителями. Разделителем в глобе всегда является символ / - независимо от операционной системы - даже в Windows, где разделителем пути является \\. В glob, \\ зарезервирован как escape-символ.
Здесь * экранирована, поэтому он рассматривается как литерал, а не подстановочный знак.
Избегайте использования методов Node path, таких как path.join, для создания globs. В Windows он создает недопустимый glob, потому что Node использует \\ в качестве разделителя. Также избегайте глобальных __dirname, __filename или process.cwd() по тем же причинам.
Специальный символ: * (одиночная звездочка)#
Соответствует любому количеству (включая ни одного) символов в одном сегменте. Полезно для добавления файлов в один каталог.
Этот глоб будет соответствовать файлам типа index.js, но не файлам вроде scripts/index.js или scripts/nested/index.js
Специальный символ: ** (двойная звездочка)#
Соответствует любому количеству (включая ни одного) символов в сегментах. Полезно для подстановки файлов во вложенных каталогах. Убедитесь, что вы соответствующим образом ограничили ваши двойные звезды, чтобы избежать ненужного сопоставления больших каталогов.
Здесь глоб соответствующим образом ограничен каталогом scripts/. Он будет соответствовать таким файлам, как scripts/index.js, scripts/nested/index.js и scripts/nested/twice/index.js.
Специальный символ: ! (отрицание)#
Поскольку globs сопоставляются в порядке массива, отрицательный глоб должен следовать по крайней мере за одним неотрицательным глобом в массиве. Первый находит набор совпадений, затем отрицательный глоб удаляет часть этих результатов. При исключении всех файлов в каталоге вы должны добавить /** после имени каталога, которое библиотека подстановки оптимизирует внутренне.
Если любые неотрицательные глобы следуют за отрицательным, ничего не будет удалено из более позднего набора совпадений.
Отрицательные глобы можно использовать в качестве альтернативы ограничению глоб с двумя звездами.
Перекрывающиеся глобы#
Два или более глоба, которые (не) намеренно соответствуют одному и тому же файлу, считаются перекрывающимися. Когда перекрывающиеся глобы используются в одном src(), gulp делает все возможное, чтобы удалить дубликаты, но не пытается выполнять дедупликацию между отдельными вызовами src().
Дополнительные ресурсы#
Здесь описывается большая часть того, что вам нужно для работы с глобами в gulp. Если вы хотите получить более подробную информацию, вот несколько ресурсов.