Ich verwende derzeit gulp, um ein Bash-Skript aufzurufen, das mein dist/
Verzeichnis bereinigt und die entsprechenden Dateien in das Bereinigungsverzeichnis verschiebt. Ich möchte, dass dies mit gulp gemacht wird, da ich nicht sicher bin, ob das Skript auf einem Nicht-Nix-Dateisystem funktioniert.
Bisher verwende ich das Modul gulp-clean, um das dist/
Verzeichnis zu bereinigen. Wenn ich jedoch versuche, die erforderlichen Verzeichnisse und ihre Dateien in den Ordner dist zu verschieben, sind die Verzeichnisse leer.
var gulp = require('gulp'),
clean = require('gulp-clean');
gulp.task('clean', function(){
return gulp.src(['dist/*'], {read:false})
.pipe(clean());
});
gulp.task('move',['clean'], function(){
gulp.src(['_locales', 'icons', 'src/page_action', 'manifest.json'])
.pipe(gulp.dest('dist'));
});
gulp.task('dist', ['move']);
Das Aufrufen gulp dist
führt dazu, dass das dist/
Verzeichnis mit den richtigen Verzeichnissen gefüllt wird, aber alle leer sind
$ ls dist/*
dist/manifest.json
dist/_locales:
dist/icons:
dist/page_action:
Wie kopiere ich die Verzeichnisse und deren Inhalt in den dist/
Ordner?
read
Option in src nicht auffalse
(true
standardmäßig auf) eingestellt haben.Die ursprüngliche Frage zielt nur auf Verzeichnisse (auch als Ordner bezeichnet) ab
gulp.src
, dhgulp.src(['_locales', ...
in diesem Beispiel_locales
ist dies der Name eines Verzeichnisses .Die akzeptierte Antwort verwendet ein
glob
Muster in seinemgulp.src
Ziel Dateien in diesen Verzeichnissen überall, das heißtgulp.src(['./_locales/**/*.*', ...
, ( man beachte die Doppel Sternchen und die filename.extension Sternchen). Die akzeptierte Antwort funktioniert ...... aber die akzeptierte Antwort betont nur die
base
Option :Ich experimentierte und fand:
Genau genommen ist es nicht erforderlich, die
base
Option zu verwenden, um die vom OP geforderten Ergebnisse zu erzielen: "... und die entsprechenden Dateien in das saubere Verzeichnis zu verschieben." Diebase
Option wird erhalten in der Tat die Ordner + Dateistruktur (wie in der akzeptierten Antwort beschrieben), aber diebase
Option ist nicht ausreichend , um die Dateien zu bewegen , wenn der OP gefragt . Das Beibehalten der Ordner- + Dateistruktur ist wahrscheinlich das, was das OP erwartet , daher ist die akzeptierte Antwort gut, aber ...Nur um zu wiederholen , was nicht die Dateien verschieben, ist es die
glob
Muster:Double-asterisk (
.../**/...
) sucht rekursiv in allen Unterordnern und Unterordnern 'Unterordnern' usw.Filename.extension asterisks (
.../*.*
) findet Dateien mit allen Namen und allen Erweiterungen . Ich denke, dieser Teil verdient die größte Betonung!Die akzeptierte Antwort ändert etwas anderes; Es fügt
./
jedem Pfadargument, an das übergeben wird, ein Präfix von hinzugulp.src
. Ich denke, das ist unnötig / überflüssig; Wenn dies nicht./
der Fall ist (wie in der OP-Frage), werden die Pfade relativ zum aktuellen Verzeichnis aufgelöst, was zu demselben Verhalten führt . Aber vielleicht ist es eine gute Praxis, mit dem explizit umzugehen./
Lassen Sie mich wissen, wenn ich mich irre ...
quelle