2014-09-03 19 views
7

ich zu einem großen Schluck Aufgabe bin versucht, die kopiert alle Dateien in einem Ordner in einen anderen OrdnerKopieren Sie nur Dateien in einem Ordner in Gulp

gulp.task('copy-fonts', ['unzip'], function() { 
    return gulp.src('./gulp-tmp/**/fonts/*') 
     .pipe(gulp.dest('fonts')); 
}); 

Das Problem ist, ändert sich der Name des Verzeichnisses nach gulp-tmp, also musste ich dort ** verwenden.

So endet das Ergebnis nach oben wie /fonts/[randomFolderName]/fonts/[the files]

Wo ich will, was /fonts/[the files]

Antwort

18

Verwendung gulp-flatten ist.

var flatten = require('gulp-flatten'); 

gulp.src('./gulp-tmp/**/fonts/*') 
    .pipe(flatten()) 
    .pipe(gulp.dest('fonts')); 
+1

schöne Lösung, Dank –

5

Ich benutze einfachen Code ohne externe Bibliotheken, zum Beispiel:

gulp.src('./src/fonts/*.{ttf,woff,eof,svg}') 
    .pipe(gulp.dest('/build/fonts')); 

oder nur HTML-Dateien:

gulp.src('./src/templates/*.html') 
    .pipe(gulp.dest('/build/templates')); 
+1

Excellent ... Dank! Ich war auf der Suche um herauszufinden, warum gerade auch in den Verzeichnissen brachte ein Stern mit: '' 'Javascript gulp.src ('app/*') .pipe (gulp.dest (config. dist.root)); '' ' ich fälschlicherweise hatte gedacht, dass ich die Doppel asterices benötigt, um zu Rekursion, aber Ihre Lösung sehen, machte mir klar, dass ich das tun kann: ' '' Javascript gulp.src ('app /*.* ') .pipe (gulp.dest (config.dist.root)); '' ' Ich denke, es wird noch in Verzeichnisse mit einem Punkt im Namen bringen ... aber trotzdem, danke. –

Verwandte Themen