Meine Frage beginnt mit einer anderen Frage, die hier gestellt wird: Gulp: Wie setze ich den Zielordner relativ zur verarbeiteten Datei (bei Verwendung von Platzhaltern)?
Ich habe eine ähnliche Situation, in der ich komprimierte Versionen pro Modul erstellen muss. Das heißt, ich habe
%Vor%und ich muss Schluck die Dateien in relative Verzeichnisse kopieren, so dass ich mit
enden %Vor%Ich habe die folgende Schluckaufgabe
%Vor%Wenn ich es jedoch ausführe, endet es mit
%Vor%Ich sehe in den Dokumenten wo es heißt
cwd - Geben Sie das Arbeitsverzeichnis an, zu dem der Ordner gehört. base - Geben Sie den Ordner relativ zum cwd an. Standard ist, wo der Glob beginnt. Dies wird verwendet, um die Dateinamen beim Speichern in .dest ()
zu bestimmen
Ich habe mehrere Fragen, insbesondere zu .src()
, .dest()
und den Pfad- und Dateiobjekten. (Das heißt, obwohl Ich bin mir sicher, dass es andere Möglichkeiten gibt, mein Endziel zu erreichen, diese Frage bezieht sich speziell auf das Verhalten des obigen Beispiel-Schluck-Codes und der genannten Funktionen, damit ich ihr Verhalten und API besser verstehen kann. )
Fragen
some/folder/a/b/c/foo.js
existiert Ich bin mir nicht sicher, ob die Basis some/folder/
, some/folder/a/
oder some/folder/a/b/c/
? <where the glob begins> + '..'
? C:\blah\ui\test\one\compressed
produziert. Daraus folgt, dass, was auch immer der tatsächliche Name der Datei entschieden hat% code% berücksichtigt. Wie ändere ich seine Meinung, so dass es nur an one\script1.js
denkt? Hinweis: Ich habe Folgendes versucht (mit gulp-debug)
%Vor%Die Konsole hat folgende Ausgabe für diese Version der Aufgabe:
%Vor%So scheint es, dass die Umbenennung keine Auswirkung auf den Pfad hat. Ich habe auch versucht, path.dirname in der Umbenennungs-Pipe zu ändern, konnte aber nichts finden, das den gewünschten Effekt hätte, einfach den falschen Verzeichnisnamen aus dem endgültigen Ausgabepfad zu entfernen.
Meine letzte Frage ist dann, was genau path.basename und path.dirname für das Pfadobjekt enthalten, das an die Umbenennungsfunktion übergeben wurde?
edit : Ich habe dieses gefunden Debug-Schluck-Aufgaben. Mit einer script1.js
-Anweisung in der Umbenennungsfunktion konnte ich das Pfadobjekt überprüfen, das so aussieht:
Einstellung path.dirname auf debugger;
in der Umbenennung ergibt
kann es sein, dass rename () selbst nicht nützlich ist für das, was ich brauche. Es sieht eher wie die Basisoption für .src () aus, wo der Schlüssel liegt, aber die Dokumente sind eher knapp.
Frage 1:
%Vor%Diese Zeile setzt '/ ui / test /' als Ihr Wurzelverzeichnis ('Arbeitsdateiverzeichnis'), da es die Basis Ihres Glob-Musters ist. Deshalb waren die relativen Pfade, die zu dest gespeist wurden, 'one / script1.js' und 'two / script2.js'.
Frage 2:
Mit glob beziehen sich die Dokumente auf Ihr Muster "** / * .js". Also ist die Basis Ihres Globs die gleiche, die es als Ihr Root-Verzeichnis verwendet, "/ ui / test /", was in diesem Fall die gleichen Dinge bedeutet wie "Ordner relativ zum cwd".
Frage 3:
Die Eigenschaft 'base' für jeden Pfad wird ähnlich wie das Modul glob2base für jede Datei aus der Datei gulp.src festgelegt streamen.
%Vor%ist dasselbe wie
%Vor%wenn das für Sie Sinn macht.
Frage 4:
Ich nehme an, dass Sie gulp-rename in Ihrem zweiten Codeabschnitt verwenden. Das sollte also dein Problem lösen.
%Vor%Die anderen Optionen, die an gulp.src übergeben werden können, finden Sie hier , aber ich nicht denke, dass einer von ihnen direkt löst, was du versuchst zu tun. gulp.src scheint nicht zu erwarten, dass Sie in einem neuen Verzeichnis in der Mitte jedes Pfades hacken, also ist das Umbenennen die einfachste Lösung.
Ich mache Ihnen keine Vorwürfe, wenn Sie Probleme haben, die Dokumente herauszufinden. Ich musste zwischen drei oder vier verschiedenen GitHub-Seiten springen, um alles zusammenzufügen. Ich hoffe du hast genauso viel gelernt wie ich.
Tags und Links javascript node.js gulp