2014-05-18 8 views
6

In meinem Schluck Build habe ich eine Aufgabe, die nach läuft alles Kompilieren, Hässlich und Minification ist aufgetreten. Diese Aufgabe kopiert einfach alles von der src in das Verzeichnis dest, das durch frühere Aufgaben nicht berührt/verarbeitet wurde. Das kleine Problem, das ich habe, ist, dass dies zu leeren Verzeichnissen im Verzeichnis dest führt.Gulp Kopieren von leeren Verzeichnissen

Gibt es eine Möglichkeit zu sagen, die gulp.src Glob nur Dateien in der Mustererkennung enthalten (wie die Bereitstellung der 'is_file' Flag)?

Danke.

Antwort

8

es behoben, durch einen Filter auf die Pipeline ergänzt:

var es = require('event-stream'); 


var onlyDirs = function(es) { 
    return es.map(function(file, cb) { 
     if (file.stat.isFile()) { 
     return cb(null, file); 
     } else { 
     return cb(); 
     } 
    }); 
}; 
// ... 

var s = gulp.src(globs) 
     .pipe(onlyDirs(es)) 
     .pipe(gulp.dest(folders.dest + '/' + module.folder)); 

// ... 
+0

Woher stammen folders.dest + '/' + module.folder? Wo sind die Vars für sie? – Nick

+0

nvm hat es funktioniert Danke! – Nick

3

Ich weiß, ich bin spät, um die Partei auf diesem, aber für alle anderen auf diese Frage zu stolpern, es gibt einen anderen Weg, dies zu tun das scheint in meinen Augen ziemlich elegant zu sein. Ich fand es in this question

Um die leeren Ordner auszuschließen, fügte ich nach dem Glob-Muster { nodir: true } hinzu.

Ihre allgemeine Muster könnte eine solche sein (mit den Variablen aus Nick's answer):

gulp.src(globs, { nodir: true }) 
    .pipe(gulp.dest(folders.dest + '/' + module.folder)); 

Meins war wie folgt:

gulp.src(['src/**/*', '!src/scss/**/*.scss', '!src/js/**/*.js'], { nodir: true }) 
    .pipe(gulp.dest('dev/')); 

Dies wählt alle Dateien aus dem src Verzeichnis, das sind nicht scss oder js-Dateien und kopiert auch keine leeren Ordner aus diesen beiden Verzeichnissen.

+0

speicherte den Tag 14082017 – paranoidhominid