2014-10-19 11 views
21

Ich habe versucht, eine gulpfile.js für mein persönliches Website-Projekt zu erstellen. Ich habe das vorher noch nie gemacht, aber mit ein wenig 'Versuch und Irrtum' funktioniert es jetzt auf eine annehmbare Weise.Gulp kopiert nicht alle Dateien wie erwartet

Das einzige, was auch nach 1000 Änderungen nicht funktioniert, ist das einfache Kopieren von Dateien und Ordnern.

var files = { 
    data_src : [ 
    './files.json', 
    'data/**/*.*' 
    ], 
    distribution_dest : '_distribution' 
}; 

gulp.task('copy-data', function() { 
    gulp.src(files.data_src, { base: './' }) 
    .pipe(gulp.dest(files.distribution_dest)) 
    .pipe(notify({message: 'Data copied for distribution!'})); 
}); 

Dies sollte alle Unterordner und Dateien auf die gulp.dest kopieren. Aber es kopiert nur die Hälfte von ihnen, einige Ordner werden ignoriert, auch wenn ich ihre Namen ändere usw. (keine Sonderzeichen, dieselbe Unterordnerstruktur wie die, die richtig kopiert wurde ...) - nichts hat funktioniert. Ich kann einfach kein Muster darin sehen.

Beim Ausführen von gulp wird keine Fehlermeldung angezeigt. Nichts, das mir helfen würde, den Fehler zu finden.

Warum werden einige Ordner oder Dateien vom Kopieren ausgeschlossen?


Ich benutze base den Ordner/Unterordnerstruktur zu halten; versucht mit und ohne 'base' -> keine Auswirkungen auf den Kopiervorgang.

Ich habe auch die Position der 'copy-data' Task in der Run-Liste geändert. Eigentlich ist es die erste Aufgabe, die ausgeführt wird. Es scheint keine Veränderung im Verhalten zu geben, egal ob es die erste oder die letzte ist.

gulp.task('default', function() { 
    gulp.run('copy-data', 'custom-sass', 'framework-sass', 'custom-js', 'framework-js', 'replace-tags', 'browser-sync'); 
    ... some watches ... 
}); 

Die Struktur des Datenordners sieht aus wie diese:

./data 
    |-doc 
    |---content 
    |---template 
    |-img 
    |---chart 
    |---icon 
    |---logo 
    |---pattern 
    |---people 
    |---photo 
    |---symbol 
    |-----brandklassen 
    |-----brandschutzzeichen 
    |-----gebotszeichen 
    |-----gefahrensymbole 
    |-----rettungszeichen 
    |-----verbotszeichen 
    |-----verkehrsrechtzeichen 
    |-----warnzeichen 
    |---wallpaper 

/data/doc und alle Unterordner sind ok.
/data/img/chart bis /data/img/people sind auch ok. Innerhalb der /data/img/photo werden nur 14 von 21 Bildern kopiert.
/data/img/symbol mit Unterordnern und /data/img/wallpaper wurden vollständig ignoriert.

+1

Wenn 'base' die Wurzel ist, sollten Sie diese Option nicht benötigen. Es kann sein, dass eines Ihrer Auswahlmuster falsch ist. Können Sie uns eine Vorstellung von der Ordnerstruktur geben? –

+0

Führen Sie vor dem Task 'copy-data' noch andere Aufgaben aus? – Heikki

+0

Das gleiche Problem wurde festgestellt. Das hat geholfen, danke. – timetowonder

Antwort

23

Gelöst es mir! Das Problem wurde durch asynchrone Betriebsaufgaben verursacht. Fügen Sie einen return erzwungenen Schluck hinzu, um den Kopiervorgang abzuschließen, bevor Sie fortfahren!

gulp.task('copy-data', function() { 
    return gulp.src(files.data_src, { base: './' }) 
    .pipe(gulp.dest(files.distribution_dest)) 
    .pipe(notify({message: 'Data copied for distribution!'})) 
}); 

Jetzt werden alle Bilder kopiert!

+0

Großartig! Danke Es ist wirklich hilfreich – user2518430

Verwandte Themen