web-dev-qa-db-fra.com

Glob / minimatch: comment tout gulp.src (), puis exclure le dossier mais garder un fichier dedans

J'ai un projet comme celui-ci:

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

J'ai besoin d'écrire gulp.src() qui inclura tous les dossiers sauf excl1 Et excl2mais conservez le fichier .gitignore.

Voici mon code qui ne fonctionne pas:

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

Cela semble fonctionner:

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

Exclure un seul fichier de la correspondance globale était difficile car il n'y a pas d'exemples similaires dans les documents minimatch.

https://github.com/isaacs/minimatch

"Si le motif commence par un !, alors il est annulé ".

73
Heikki