Gulp Task-Pipeline nur Concat, wenn Quelldatei (en) geändert

8

Ich habe eine Schluckaufgabe, die verkettete JS-Dateien generiert. Ich verwende eine Überwachung, um Änderungen an allen Dateien im Projekt zu erkennen, und möchte, dass die Concat-Task die Dateien nur dann neu verkettet, wenn sich die Quelldateien seit der letzten Ausführung geändert haben.

Hinweis: Ich könnte genauere Watch-Befehle verwenden, aber in meinem realen Produktionsfall erzeugen wir mehrere konkatenierte JS-Dateien aus mehreren Kombinationen von Quell-JS-Dateien, so dass das Erstellen von Watches und Tasks für jede dieser Komponenten viel komplexer ist >

In etwa so:

%Vor%

Ich dachte über die Verwendung eines Lazypipe für die letzten zwei Schritte nach, so dass ich nur die concat und dest ausführen, wenn es Dateien gibt, aber ich weiß nicht wie:

  • Führen Sie eine Bedingung basierend darauf aus, ob noch Dateien in der Pipeline vorhanden sind (nach cache ()
  • )
  • Bringen Sie alle Quelldateien zurück (im Grunde geben Sie gulp.src () erneut aus, um den Stream neu zu erstellen)

Ich weiß, ich könnte Schluck-Erinnerung für den zweiten Teil verwenden, aber in meinem Produktionsfall wäre es viel sauberer, den Stream einfach neu aufzubauen, wenn das möglich ist.

Wer hat das schon einmal gemacht oder irgendwelche Tipps für den Anfang?

    
Allen 16.07.2014, 14:39
quelle

3 Antworten

3

Der Code in moettingers Antwort (zum Zeitpunkt der Erstellung) ist falsch. Hier ist der zurückzugebende Stream:

%Vor%

Beim Testen gegen ein einzelnes Ziel muss dem Aufruf newer() ein Pfad übergeben werden, der relativ zum aktuellen Verzeichnis (oder einem absoluten Pfad) ist. Es kann kein Pfad sein, der mit dem in gulp.dest() angegebenen Pfad interpretiert werden soll. Mit dem Aufruf newer('app.js') führt der Aufruf newer immer dazu, dass concat ausgeführt wird, weil die Datei nicht gefunden wird.

Die Dokumentation gibt ein ähnliches Beispiel .

    
Louis 01.10.2015 16:34
quelle
1

Das Plugin gulp-newer sollte den Trick machen.

%Vor%     
moettinger 28.07.2014 15:16
quelle
0

Obwohl dies eine alte Frage ist, dachte ich, ich würde einfach zu den Schluck-neueren Informationen hinzufügen. Gulp-neuere erkennt Änderungen basierend auf dem Zeitstempel der Dateien. Wenn eine Datei gelöscht wird, wird diese Änderung vom gulp-neuere nicht übernommen.

Aus diesem Grund suche ich die Caching-Route lieber als neuere, da ich meine Haupt-concated-Datei generiert werden muss, wenn eine der CSS-Dateien gelöscht oder geändert wird, aber Schluck neuer unterstützt nicht all dies.

    
lilpug 01.10.2015 12:36
quelle

Tags und Links