Простое регулярное выражение в файле Gruntfile
У меня есть следующая строка в Gruntfile
.
js
files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],
Может ли кто-нибудь быть таким добрым, как сказать мне, что означает {,*/}*
? Я знаю, что он пытается сопоставить все файлы .coffee
в папке скриптов, но я хочу знать, как это происходит.
Ответы
Ответ 1
{,*/}
соответствует одному или нулю каталогов между скриптами и файлом. coffee. Внутри {} есть фактически два совпадающих слова, разделенных запятой. Один пуст, не обозначенный символами слева от запятой. Одним из них является любое количество символов и косая черта. Финал * соответствует имени файла перед расширением .coffee.
Кстати, это не регулярные выражения, а глобусы.
Ответ 2
Согласно документации:
Кроме того, поскольку это JavaScript, вы не ограничены JSON; вы можете используйте любой действующий JavaScript здесь. Вы даже можете программно генерировать при необходимости, конфигурации.
Похоже, что {,*/}*
соответствует JSON
для:
{
'' = empty space matches no character
, = or
* = Any Characters (except slash) (wildcard)
/ = literal slash
}
* = Any Characters (except slash) (wildcard)
Обновить Найден другой ресурс:
Шаблоны глобусов
Часто нецелесообразно указывать все исходные файловые пути по отдельности, поэтому Grunt поддерживает расширение имени файла (также известное как globbing) через встроенные библиотеки node -glob и минимизации.
Хотя это не всеобъемлющий учебник по шаблонам глобусов, знаете что в пути к файлу:
* соответствует любому числу символов, но не /
? соответствует одному символу, но не /
** соответствует любому количеству символов, включая /, если это единственное в части пути
{} разрешает список разделенных запятыми "или" выражений
! в начале шаблона будет отменено совпадение