2014-10-21 8 views
31

ich darin eine Datei behalten haben ein Projekt wie folgt aus:Glob/minimatch: wie() alles gulp.src, dann Ordner ausschließen, aber

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

Ich brauche gulp.src() zu schreiben, die alle Ordner enthalten wird, außer excl1 und excl2aber halten Sie die .gitignore Datei.

Dies ist mein Code, der nicht funktioniert:

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

Ohne einzelne Datei aus glob Match war schwierig, weil es keine ähnlichen Beispiele in minimatch docs ist:

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

Wer die globstar-artige Syntax erfunden hat, verdient Hell. Ernst. –

Antwort

72

Dies scheint zu funktionieren.

https://github.com/isaacs/minimatch

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

+0

Nicht perfekt. Jetzt werden alle '.gitignore's unter excl2 behalten. – Heikki

+0

Das wäre kein großes Problem für mich. Danke, ich werde es versuchen. – Borek

+0

Werke. Die geschweiften Klammern werden nicht einmal benötigt. – Borek

Verwandte Themen