Ich benutze derzeit gulp, um ein Bash-Skript aufzurufen, das mein dist/
Verzeichnis und verschiebt die entsprechenden Dateien in das saubere Verzeichnis. Ich würde dies gerne mit gulp machen, da ich nicht sicher bin, ob das Skript auf einem Nicht-Nix-Dateisystem funktionieren würde.
Bisher benutze ich das Modul "gulp-clean", um die dist/
Verzeichnis, aber wenn ich 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']);
aufrufen von gulp dist
ergibt das dist/
Verzeichnis wird mit den richtigen Verzeichnissen gefüllt, aber sie sind alle leer
$ ls dist/*
dist/manifest.json
dist/_locales:
dist/icons:
dist/page_action:
Wie kopiere ich die Verzeichnisse und deren Inhalt in das dist/
Mappe?
Sie müssen die Option base
in src einfügen, um die Dateistruktur wie gewünscht beizubehalten:
var filesToMove = [
'./_locales/**/*.*',
'./icons/**/*.*',
'./src/page_action/**/*.*',
'./manifest.json'
];
gulp.task('move',['clean'], function(){
// the base option sets the relative root for the set of files,
// preserving the folder structure
gulp.src(filesToMove, { base: './' })
.pipe(gulp.dest('dist'));
});
Außerdem werden Sie wahrscheinlich Probleme haben, wenn Sie alle diese Quelldateien im Stammverzeichnis Ihres Projekts haben.
Wenn Sie können, würde ich empfehlen, dass Sie ein einzelnes src/
Ordner und verschieben alle Ihre anwendungsspezifischen Dateien dorthin. Dies erleichtert die Wartung und verhindert, dass Ihre Build-spezifischen Dateien mit Ihren anwendungsspezifischen Dateien verwechselt werden.
Wenn Sie dies tun, ersetzen Sie einfach alle Vorkommen von ./
mit src/
im obigen Beispiel.
Die ursprüngliche Frage zielt nur auf Verzeichnisse (auch Ordner genannt) in ihrem gulp.src
, Dh gulp.src(['_locales', ...
In diesem Beispiel auf _locales
Ist der Name eines Verzeichnisses .
Die akzeptierte Antwort verwendet ein glob
Muster in ihrem gulp.src
, Um Dateien irgendwo in anzuvisieren diese Verzeichnisse, dh gulp.src(['./_locales/**/*.*', ...
(beachten Sie die Doppel-Sternchen und die Dateinamen-Erweiterung Sternchen). Die akzeptierte Antwort funktioniert ...
... aber die akzeptierte Antwort hebt nur die Option base
hervor:
Sie müssen die Option
base
einschließen, um src ...
Ich experimentierte und fand:
Genau genommen ist es nicht erforderlich, die Option base
zu verwenden, um das zu erreichen, wonach das OP gefragt hat: "... und die entsprechenden Dateien zu verschieben in das saubere Verzeichnis. " Die base
-Option funktioniert bewahrt in der Tat die Ordner + Datei -Struktur (wie in der akzeptierten Antwort beschrieben), aber die Option base
ist nicht ausreichend , um die Dateien als OP zu verschieben fragte . Das Beibehalten der Ordner- und Dateistruktur ist wahrscheinlich das, was das OP erwartet , daher ist die akzeptierte Antwort gut, aber ...
Nur um zu wiederholen, was die Dateien bewegt , sind es die glob
Muster:
Doppelter Stern (.../**/...
) Sucht rekursiv in allen Unterordnern, Unterordnern, Unterordnern usw.
Dateiname.Erweiterungs-Sternchen (.../*.*
) Finden Dateien aller Namen und aller Erweiterungen. Also ich denke, dieser Teil verdient die größte Betonung!
Die akzeptierte Antwort ändert etwas anderes. Es fügt jedem Pfadargument, das an ./
übergeben wird, das Präfix gulp.src
hinzu. Ich denke das ist unnötig/überflüssig; Wenn es kein ./
gibt (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 Übung, mit ./
Explizit vorzugehen.
Lassen Sie mich wissen, wenn ich mich irre ...