Ответ 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
"Если шаблон начинается с символа !
, тогда он отрицается".