Computergesteuerte Verfahren leiden nicht unter diesen Problemen, sie hängen jedoch davon ab, was der Mensch ihnen sagt. Es handelt sich um einen iterativen Zyklus. Das Problem besteht darin, dass es wahrscheinlicher ist, dass der Mensch keine Verpflichtung eingeht, wenn er jeweils nur eine Aufgabe ausführt Fehler, aber eine Maschine kann mehrere Aufgaben gleichzeitig genau erledigen.
Was wir erreichen wollen, ist, dass wir in einer Entwicklungsumgebung den Algorithmus für mehrere Aufgaben einzeln manuell ausführen können. Wenn wir jedoch ein Tool programmieren, das diese ausführt, garantieren wir, dass sie wie die ersten ausgeführt werden Zeit und ohne Probleme.
Anforderungen
Dies ist ein Tutorial für Fortgeschrittene, daher benötigen wir einige Aspekte, die Sie haben und beherrschen müssen:
Mehrere Aufgaben
Die verschiedenen Aufgaben in Grunt sind einfachen Aufgaben in dem Sinne sehr ähnlich, dass wir einige Prozesse automatisieren können. Im Gegensatz zu den einfachen Aufgaben akzeptieren mehrere Aufgaben unterschiedliche Konfigurationen, sodass dieselbe Aufgabe mit unterschiedlichen Parametern ausgeführt werden kann So oder so, wie wir es definiert haben.
Hier ist es wichtig, nicht bei der Illusion zu bleiben, dass Grunt wissen wird, was zu tun ist, da es in der Verantwortung jedes Entwicklers liegt, alles zu definieren, was Grunt tun muss. Dies wird mit Konfigurationsoptionen erreicht, und daher kann jede Aufgabe mit mehreren Optionen einen Pfad haben zu folgen, was wir anzeigen können.
Im folgenden Beispiel werden wir insbesondere die Kopie einiger Dateien erstellen. Der interessante Teil ist jedoch, dass wir zwei Sätze von Kopien definieren und abhängig vom gewünschten Pfad die eine oder andere Aufgabe ausführen und es so zu einer Mehrfachaufgabe machen.
Aufgabe definieren
Zunächst definieren wir die Mehrfachaufgabe. Statt registerTask zu verwenden , müssen wir registerMultiTask verwenden . Dadurch erhalten wir einen anderen Aufgabenobjektkonstruktor, mit dem wir die von uns verfolgten Ziele erreichen können.
Dann werden wir ein Objekt namens this.files iterieren. Was es wirklich tut, sind die Elemente, die zu Dateien gehören, die wir etwas später im forEach- Block sehen werden, in dem wir das entsprechende Kopieren durchführen und am Ende von Die Aufgabe druckt alles im Protokoll aus, das es uns ermöglicht, es auf dem Grunt- Bildschirm anzuzeigen.
Nachfolgend sehen wir den Anfangscode unseres Beispiels:
grunt.registerMultiTask ('copy', function () { this.files.forEach (function (file) { grunt.file.copy (file.src, file.dest); }); grunt.log.writeln ('Kopiert:' + this.files.length + 'files'); });
Sobald wir die Aufgabe richtig definiert haben, müssen wir zur nächsten Phase übergehen. Dies ist nichts weiter als die Konfiguration unserer Mehrfachaufgabe zu definieren, die wir zu Beginn des Beispiels angegeben haben. Diese Konfiguration ist auf eine logische Weise aufgebaut, wie wir sagen das hat mehrere Ziele.
Wir werden dann unsere Konfiguration erstellen, in der wir den folgenden Code verwenden:
grunt.initConfig ({ Kopie: { target1: { Dateien: { 'Ziel / Datei1.txt': 'Quelle / Datei1.txt', "Ziel / Datei2.txt": "Quelle / Datei2.txt" } }, target2: { Dateien: { 'Ziel / Datei3.txt': 'Quelle / Datei3.txt', 'destination / file4.txt': 'source / file4.txt' } } } });
Da wir unsere Aufgabe definiert und konfiguriert haben, ist es Zeit, dass unsere Aufgabe ausgeführt wird. Daher müssen wir unsere Aufgabe von der Konsole aus aufrufen und das gewünschte Ziel angeben, und damit weiß Grunt , dass er das tun muss, was wir programmiert haben Sehen wir uns an, wie das auf der Konsole aussieht:
Wenn wir jetzt unseren Zielordner überprüfen, werden wir sehen, wie die Dateien dort sind:
Wenn wir unser Ziel zwei ausführen und den Ordner überarbeiten, werden wir sehen, dass wir alle Dateien kopiert haben:
Dies mag auf den ersten Blick etwas kompliziert erscheinen. Sobald wir jedoch wissen, wie diese Aufgaben auszuführen sind, ist es viel einfacher, sie auszuführen. Dies können wir berücksichtigen, wenn wir die Ziele nicht kennen oder wenn wir möchten, dass alles abläuft Füllen Sie das Formular einfach aus, indem Sie die Aufgabe direkt aufrufen. Dadurch werden alle Ziele ausgeführt, die Sie in Ihrer Konfiguration haben, wie im folgenden Screenshot zu sehen ist:
Das Multitask-Objekt
Da wir in Grunt eine erste Annäherung an die Welt der vielfältigen Aufgaben erlebt haben , ist es wichtig, ein wenig über das Multitask- Objekt zu sprechen, mit dem wir viele dieser Aktionen ausführen können für Missbräuche oder Laster, die beim Schreiben von Aufgaben entstehen, ohne zu wissen, was wir tun.
Wir werden zunächst die wichtigsten Eigenschaften dieses Objekts betrachten und sie kurz beschreiben, damit wir anfangen können, Wissen zu generieren.
Wie wir sehen können, hat das Multitask- Objekt einige interessante Komponenten, die, sobald sie bekannt sind, den Horizont dessen öffnen, was Grunt uns in dieser Art von Mehrfachkonfigurationen bieten kann.
Die Kenntnis der Eigenschaften des Multitask- Objekts ist sehr wichtig, hier zeigen wir nur das Wichtigste. In der offiziellen Dokumentation finden wir jedoch viel mehr Informationen, obwohl es in englischer Sprache mit ein wenig Arbeit mit kostenlosen Übersetzern wie Google ist Falls wir die sichere Sprache nicht beherrschen, können wir die Idee, wie dieses Objekt funktioniert, vertiefen.
Nachdem wir das Tutorial beendet haben, haben wir gelernt, wie man eine Aufgabe mit mehreren Abschnitten ausführt, die getrennt oder alle zusammen ausgeführt werden, je nachdem, wie wir den gleichen Aufruf ausführen. Dieser Aufruf kann manuell oder auch von einer Aufgabe aus erfolgen Die Automatisierungsumgebung wird immer komplexer, aber wenn ein Projekt größer wird, ist dies erforderlich, um die von uns gesetzten Ziele zu erreichen.