Что означает `{, */}` по пути Gruntfile.js?
В Gruntfile.js
у меня есть:
watch: {
styles: {
files: [
'<%= yeoman.app %>/styles/{,*/}*.less'
],
tasks: ['copy:styles', 'autoprefixer']
}
}
Для пути, что означает {,*/}
, действительно? Как он отличается от использования двойных звездочек **/
?
Ответы
Ответ 1
Этот шаблон широко используется в шаблонах yeoman: это означает, что вы смотрите только на одну глубину внутри иерархии папок. Он используется в основном по причинам производительности, поскольку просмотр слишком большого количества файлов одновременно может быть медленным (или даже невозможным).
Ответ 2
Это шаблоны globeing для Grunt, поддерживаемые node-glob и minimatch.
В принципе:
-
*
соответствует любому количеству символов , но не /
-
**
соответствует любому числу символов , включая /
, если это единственное в части пути
-
{}
разрешает список разделенных запятыми "или" выражений
Итак, styles/{,*/}*.less
соответствует следующим файлам:
- МЕНЬШИЕ файлы внутри каталога
styles
- МЕНЬШИЕ файлы внутри прямых подкаталогов каталога
styles
(но не глубже)
Ответ 3
Я полагаю, что вы используете шаблон минимализации.
Двойная звездочка - это глобус, который вызывает рекурсию в подкаталоги.
Единственная звездочка соответствует только 0 или более символам в текущем каталоге (она соответствует каждому символу, кроме символа косой черты).
Например, a/**/d будет соответствовать a/b/c/d.
Ответ 4
Ответ globbing-patterns.
Другие ответы уже ответили, что означает {,*/}*
.
Но разница между **/
и {,*/}*
составляет глубину папки.
Например
/styles/{,*/}*.less
будет соответствовать /styles/x.less
(ситуация 1)
/styles/{,*/}*.less
также будет соответствовать /styles/test/x.less
(ситуация 2)
Но /styles/{,*/}*.less
не может соответствовать /styles/test/test1/x.less
Но /styles/**/*.less
может сделать это