Frage

Ich versuche, ein Projekt von einem Arbeitsverzeichnis auf einem Server (dem gleichen Computer) bereitzustellen.Verwenden Sie den folgenden Code:

gulp.src([
    'index.php',
    'css/**',
    'js/**',
    'src/**',
])
.pipe(gulp.dest('/var/www/'));

Ich würde erwarten, dass alle Dateien kopiert werden.Allerdings wird dadurch die Verzeichnisstruktur abgeflacht – alle Verzeichnisse werden kopiert, aber jede Datei wird im Stammverzeichnis abgelegt /var/www

Gulp scheint ein großartiges Build-Tool zu sein, aber das Kopieren von Elementen sollte doch sicher ein einfacher Vorgang sein?

War es hilfreich?

Lösung 2

Es stellt sich heraus, dass eine vollständige Verzeichnisstruktur kopiert werden soll gulp muss mit einer Basis für Ihre bereitgestellt werden gulp.src() Methode.

Also gulp.src( [ files ], { "base" : "." }) kann in der obigen Struktur verwendet werden, um alle Verzeichnisse rekursiv zu kopieren.

Wenn Sie das vielleicht wie ich vergessen, dann versuchen Sie es:

gulp.copy=function(src,dest){
    return gulp.src(src, {base:"."})
        .pipe(gulp.dest(dest));
};

Andere Tipps

Folgendes funktioniert, ohne die Ordnerstruktur zu reduzieren:

gulp.src(['input/folder/**/*']).pipe(gulp.dest('output/folder'));

Der '**/*' ist der wichtige Teil.Dieser Ausdruck ist a Kugel Dies ist ein leistungsstarkes Tool zur Dateiauswahl.Um beispielsweise nur .js-Dateien zu kopieren, verwenden Sie: 'input/folder/**/*.js'

so - die Lösung der Bereitstellung eines Basiswerks, da alle Pfade den gleichen Basispfad haben.Wenn Sie jedoch verschiedene Basispfade liefern möchten, funktioniert dies jedoch nicht.

Eine Möglichkeit, mit der ich dieses Problem gelöst habe, war der Beginn des Pfads relativ. Für Ihren Fall:

generasacodicetagpre.

Der Grund, warum dies funktioniert, ist, dass GULP die Basis das Ende des ersten expliziten Chunks setzt - das führende * bewirkt, dass es die Basis an der CWD eingestellt hat (was ist das Ergebnis, dass wir alle wollen!)

Dies funktioniert nur, wenn Sie sicherstellen können, dass Ihre Ordnerstruktur keine bestimmten Pfade hat, die zweimal übereinstimmen können.Wenn Sie beispielsweise randomjs/ auf demselben Niveau wie generasacticetagcode hätten, enden Sie mit beiden zusammen.

Dies ist der einzige Weg, den ich als Teil einer hochrangigen GULP.SRC-Funktion aufgenommen habe.Es wäre wahrscheinlich einfach, ein Plugin / Funktion zu erstellen, das sich jedes dieser Globs trennen könnte, sodass Sie das Basisverzeichnis für sie angeben können.

Wenn Sie den gesamten Inhalt eines Ordners rekursiv in einen anderen Ordner kopieren möchten, können Sie den folgenden Windows-Befehl aus gulp ausführen:

xcopy /path/to/srcfolder /path/to/destfolder /s /e /y

Der /y Die Option am Ende besteht darin, die Bestätigungsmeldung zum Überschreiben zu unterdrücken.

Unter Linux können Sie den folgenden Befehl über gulp ausführen:

cp -R /path/to/srcfolder /path/to/destfolder

Sie können verwenden gulp-exec oder Schlucklauf Plugin zum Ausführen von Systembefehlen aus gulp.

Verwandte Links:

  1. xcopy-Nutzung

  2. gulp-exec Und Schlucklauf

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top