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

Glob/minimach: как gulp.src() все, а затем исключить папку, но сохранить в ней один файл

У меня есть проект вроде этого:

root
  |-incl1
  |-incl2
  |- ...
  |-excl1
  |-excl2
     |- .gitignore  <-- keep this one
     |- (other files)  <-- exclude them

Мне нужно написать gulp.src(), который будет включать все папки, кроме excl1 и excl2 , но сохранить файл .gitignore.

Это мой код, который не работает:

gulp.src([
  baseDir + '/**',
  '!' + baseDir + '/{excl1, excl1/**}'
  '!' + baseDir + '/excl2/{**, !.gitignore}'  // <-- doesn't work
], {dot: true})
4b9b3361

Ответ 1

Это работает:

gulp.src([
    baseDir + '/**',                              // Include all
    '!' + baseDir + '/excl1{,/**}',               // Exclude excl1 dir
    '!' + baseDir + '/excl2/**/!(.gitignore)',    // Exclude excl2 dir, except .gitignore
], { dot: true });

Исключение одного файла из glob-совпадения было сложным, потому что подобных примеров в документах минимизации не было.

https://github.com/isaacs/minimatch

"Если шаблон начинается с символа !, тогда он отрицается".