Grunt watch: nur Dateien hochladen, die sich geändert haben

8

bezogen

Ich konnte mithilfe von grunt-ssh : %Vor%

Aber das lädt alles , wenn ich es ausführe. Es gibt Tausende von Dateien. Ich habe keine Zeit zu warten, bis sie jedes Mal, wenn ich eine Datei ändere, einzeln hochgeladen werden.

Wie kann ich eine Uhr so ​​einrichten, dass nur die geänderten Dateien hochgeladen werden, sobald ich sie geändert habe?

(Für die Neugierigen ist der Server eine VM im lokalen Netzwerk. Er läuft auf einem anderen Betriebssystem und das Setup ist der Produktion ähnlicher als meine lokale Maschine. Uploads sollten blitzschnell sein, wenn ich das richtig funktionieren lassen kann)

    
mpen 05.12.2013, 18:45
quelle

5 Antworten

2

Das kannst du mit Grunt erreichen:

  • grunt-contrib-watch

  • grunt-rsync

Das Wichtigste zuerst: Ich benutze einen Docker Container. Ich habe auch einen öffentlichen SSH-Schlüssel in meinen Docker Container eingefügt. Daher lade ich nur die Dateien in meinen "Remote" -Container hoch, die sich in meiner lokalen Umgebung mit dieser Grunt-Aufgabe geändert haben:

%Vor%

Viel Glück und Happy Hacking!

    
José Pablo Orozco Marín 30.12.2014, 16:22
quelle
7

Was Sie brauchen, ist grunt-newer , eine Aufgabe, die speziell dafür entwickelt wurde, die Konfiguration jeder Aufgabe abhängig von der Datei zu aktualisieren gerade geändert, dann starte es. Eine Beispielkonfiguration könnte wie folgt aussehen:

%Vor%     
Ben 05.12.2013 20:40
quelle
4

Sie können mit der Uhr verwenden Ereignis von grunt-contrib-watch . Im Grunde müssen Sie das Überwachungsereignis behandeln, die sftp-Dateikonfiguration ändern, um nur die geänderten Dateien einzuschließen, und dann die sftp-Aufgabe ausführen lassen.

In etwa so:

%Vor%

Beachten Sie die Option "spawn: false" und die Art, wie Sie die Konfiguration im Ereignishandler festlegen müssen.

Hinweis2: Mit diesem Code wird jeweils eine Datei hochgeladen. Es gibt eine robustere Methode in derselben link .

    
sdecima 15.05.2014 21:15
quelle
2

Ich bin kürzlich auf ein ähnliches Problem gestoßen, bei dem ich nur Dateien hochladen wollte, die sich geändert haben. Ich verwende nur grunt-exec . Wenn Sie ssh -Zugriff auf Ihren Server haben, können Sie diese Aufgabe wesentlich effizienter ausführen. Ich habe auch eine rsync.json erstellt, die von git ignoriert wird, so dass Mitarbeiter ihre eigenen rsync-Daten haben können.

Der Vorteil ist, dass wenn jemand eine Änderung vornimmt, er automatisch auf seine Stufe hochlädt.

%Vor%

Meine Bereitstellungsaufgabe ist eine registrierte Aufgabe, die Skripts kompiliert und dann exec:deploy

ausführt %Vor%

Sie sehen eine Menge von <%= rsync %> Zeug? Ich nutze das, um Informationen aus rysnc.json zu erhalten, die von git gespeichert werden. Ich habe nur das, weil dies ein Team-Workflow ist.

%Vor%

Stellen Sie sicher, dass rsync.json in grunt:

definiert ist %Vor%     
docodemore 16.06.2014 16:00
quelle
0

Ich denke, es ist keine gute Idee, alles, was sich auf einmal geändert hat, auf den Staging-Server hochzuladen. Auch die Arbeit am Staging-Server ist keine gute Idee. Sie müssen Ihren lokalen Computerserver so konfigurieren, dass er der Staging / Produktion entspricht.

Es ist besser 1 Mal hochzuladen, wenn Sie die Bereitstellung durchführen.

Sie können alle Dateien mit grunt-contrib-compress archivieren. Und schieben Sie sie mit Grunt-ssh als 1 Datei, dann extrahieren Sie es auf dem Server, das wird viel schneller sein.

Das ist ein Beispiel für eine komprimierte Aufgabe:

%Vor%

PS: Habe nie nach Rsync-Grunt-Modulen gesucht. Ich verstehe, dass es nicht das ist, wonach Sie suchen. Aber ich entschied mich, meine Antwort als eigenständige Antwort zu erstellen.

    
Rantiev 25.02.2014 10:22
quelle