webentwicklung-frage-antwort-db.com.de

Glob / minimatch: wie man gulp.src () alles, dann Ordner ausschließen, aber eine Datei darin behalten

Ich habe ein Projekt wie dieses:

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

Ich muss gulp.src() schreiben, das alle Ordner außer excl1 Und excl2 Enthält aber die Datei .gitignore Behalten.

Dies ist mein Code, der nicht funktioniert:

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

Das scheint zu funktionieren:

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

Das Ausschließen einer einzelnen Datei von der Glob-Übereinstimmung war schwierig, da es in Minimatch-Dokumenten keine ähnlichen Beispiele gibt.

https://github.com/isaacs/minimatch

"Beginnt das Muster mit einem ! Zeichen, dann wird es negiert ".

73
Heikki