Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Glob / minimatch: how to gulp.src() everything, then exclude folder but keep one file in it

I have a project like this:

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

I need to write gulp.src() that will include all folders except excl1 and excl2 but keep the .gitignore file.

This is my code that doesn't work:

gulp.src([   baseDir + '/**',   '!' + baseDir + '/{excl1, excl1/**}'   '!' + baseDir + '/excl2/{**, !.gitignore}'  // <-- doesn't work ], {dot: true}) 
like image 678
Borek Bernard Avatar asked Oct 21 '14 11:10

Borek Bernard


1 Answers

This seems to work:

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

Excluding single file from glob match was tricky because there's no similar examples in minimatch docs.

https://github.com/isaacs/minimatch

"If the pattern starts with a ! character, then it is negated".

like image 192
Heikki Avatar answered Oct 02 '22 18:10

Heikki