Ich versuche, alle Dateien in einem Verzeichnis als Teil meines Erstellungsprozesses in ein anderes Verzeichnis zu kopieren. Es funktioniert gut für einzelne Dateien, die ich explizit spezifiziere, aber wenn ich versuche, das gesamte Verzeichnis zu kopieren, macht es seltsame Dinge wie das Kopieren der vollständigen Verzeichnisstruktur (oder gar nichts). Hier ist der relevante Teil aus meiner GruntFile.js:
copy: {
myvoice: {
files: [
{ src:"src/html/index.html", dest:"dist/myvoice/index.html" },
{ src:"src/html/css/style.css", dest:"dist/myvoice/css/style.css" },
{ src:"src/html/js/require.js", dest:"dist/myvoice/js/require.js" },
{ src:"build/myvoice/main.js", dest:"dist/myvoice/js/main.js" },
{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
]
}
},
Insbesondere ist es die letzte Zeile, die ich nicht zur Arbeit bringen kann:
{ src:"src/html/css/fonts/*", dest:"dist/myvoice/css/fonts/" }
quelle
cwd
Optionen verwenden, müssen Sie sich umdrehenexpand:true
. Wenn Sie nicht einstellenexpand:true
, funktioniert cwd nicht richtig.flatten: false
, damit dies funktioniert.**/*
Das ist, wonach ich gesucht habe, was ich benutzt habe ** danke Mann.Diese Aufgabe behält die Ordnerstruktur bei, wenn Sie einen Dateiglob angeben. Was Sie wollen, ist die
flatten
Option, mit der die Struktur entfernt wird.Den Rest der verfügbaren Optionen finden Sie im Github-Repo . Hoffe das hilft.
quelle
Ich möchte hinzufügen, dass das Ändern des Formats des Globs in src die Funktionsweise der Kopie ändert.
Wie oben von bmoeskau ausgeführt , wird im Folgenden alles darin kopiert
dist/
und verschobenpath/to/dir
(das Ziel überschreiben, falls es bereits vorhanden ist).Beachten Sie jedoch Folgendes:
Kopiert nur Dateien innerhalb
dist/
von Verzeichnissen, kopiert jedoch nicht den Inhalt dieser Verzeichnisse in das Ziel.Im Folgenden
src: '*/*'
werden nur Verzeichnisse mit Inhalten kopiertdist/
. Das heißt, Dateien, die sich gerade befinden,dist/
werden nicht kopiert.Schließlich wie oben,
src: '**/**'
kopiert jedoch nur Dateien innerhalbdist/
sowie Dateien indist/
Unterverzeichnissen nachpath/to/dir
. Es werden also keine Ordner im Ziel vorhanden sein.quelle
**
immer Dateien und Verzeichnisse und*
nur Dateien?*
s, die als einzelnes Muster verwendet werden, stimmen mit allen Dateien und null oder mehr Verzeichnissen und Unterverzeichnissen überein . Wenn gefolgt von a/
,*
stimmen zwei benachbarte s nur mit Verzeichnissen und Unterverzeichnissen überein .**
passt zu allem , während**/
nur Verzeichnisse und Unterverzeichnisse (keine Dateien).Musste egdy statt geschweifte Klammern für das Dateisegment verwenden (in Coffeescript) ...
quelle
Wenn Sie mit eckigem Yeoman entwickeln, ist dies der bessere Weg, um mit Grunzen zu kopieren. expand: true ist erforderlich, wenn cwd verwendet wird. <% = yeoman.app%> ist nur die App-Route ('.').
quelle