Подтвердить что ты не робот

Что означает `{, */}` по пути Gruntfile.js?

В Gruntfile.js у меня есть:

watch: {
    styles: {
      files: [
        '<%= yeoman.app %>/styles/{,*/}*.less'
      ],
      tasks: ['copy:styles', 'autoprefixer']
    }
}

Для пути, что означает {,*/}, действительно? Как он отличается от использования двойных звездочек **/?

4b9b3361

Ответ 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/*.less
    • /styles/*/*.less

Например

/styles/{,*/}*.less будет соответствовать /styles/x.less (ситуация 1)

/styles/{,*/}*.less также будет соответствовать /styles/test/x.less (ситуация 2)

Но /styles/{,*/}*.less не может соответствовать /styles/test/test1/x.less

Но /styles/**/*.less может сделать это