Ich fasse die bisherigen Beiträge zum Automatisierungstool Grunt zu einem kleinen vorläufigen Tutorial zusammen. Dieses wird gegebenenfalls durch weitere Beiträge von Zeit zu Zeit erweitert.
Teil 1: Deployment mit Grunt.js unter Windows - Basics
Der Schwerpunkt in diesem Beitrag liegt auf der Installation von Grunt unter Windows, die nicht ohne Tücken ist.
Außerdem wird ein kleines rudimentäres Grunt-Projekt für zwei typische Tasks vorgestellt: Build und Deploy.
Der Beitrag zeigt die grundsätzliche Struktur von Grunt-Projekten auf, vermittet aber auch Möglichkeiten, mit Hilfe des Moduls grunt-shell einfache Automatisierungsaufgaben auf Basis von Shell-Kommandos lokal und remote auszuführen.
Teil 2: Grunt-Skripte debuggen mit Chrome unter Windows
Eine zentrale Notwendig des Programmierens ist das Debuggen. Das gilt auch für Grunt-Skripte. Deshalb wird die Technik des Debuggens im zweiten Beitrag der Grunt-Reihe vermittelt.
Zum Einsatz kommt hier das Entwicklertool des Chrome-Browsers.
Es wird gezeigt, wie man routinemäßig per Batch sein Skript im Debug-Modus mit einem Klick aufruft.
Teil 3: Grunt asynchron - Fallstricke und Strategien
Grunt ist ein in erster Linie ein synchrones Tool, aber wie immer in einem solchen Fall wäre die Beschränkung auf synchrone Ausführung von Tasks zu inflexibel.
Deshalb benötigt man solide Kenntnisse auch in der asynchronen Ausführung von Aufgaben, da sie zum einen häufig vorkommen und zum anderen sehr zum Verständnis von Grunt beitragen.
Teil 4: Fünf wichtige Grunt-Methoden, Dateien zu kopieren
Kopieren von Dateien ist eine sehr häufige und wichtige Aufgabe von Automatisierungstools. Im folgenden werden fünf verschiedene Ansätze unter Berücksichtigung typischer Einsatzbereiche vorgestellt:
- Kopieren mir reinem Javaskript, wenn Datei-Inhalte dabei verändert werden müssen,
- Kopieren mit dem Modul grunt-contrib-copy, z.B. zum Erstellen eines Build,
- Kopieren mit Hilfe von Shell-Kommandos, z.B. unter Windows mit xcopy (oder Linux: cp),
- inkrementelles Kopieren unter Windows mit Robocopy,
- inkrementelles Live-Kopieren mit grunt-contrib-watch und grunt-sync.
Teil 5: Drush und Grunt vertragen sich - sehr gut sogar
Drush ist ein wichtiges Consolen-Tool für Drupal. Es lässt sich ausgezeichnet mit Grunt zusammen für die Automatisierung des Staging & Deployments sowie für die Wartung (Maintenance) von Drupal-Portalen einsetzen. Häufig werden spezielle Tools z.B. für Continous Integration sogar überflüssig.
Es wird die Installation von Drush lokal unter Windows und Remote unter Linux gezeigt.
Außerdem wird für jedes der beiden Installationen ein typisches Beispiel für die Automatisierung mit Grunt und Drush gezeigt: die Erstellung eines Komplett-Backups einer Drupal-Installation und zwar sowohl lokal als auch remote.
Teil 6: Grunt-Code organisieren - Ein paar einfache Techniken
Größere Projekte erfordern eine komplexere Organisation des Source-Codes. In diesem Beitrag werden folgende Möglichkeiten vorgestellt:
- Vereinfachung der Struktur von Grundfile.js,
- Auslagerung von Hilfsfunktionen in Helper-Objekte, die in externen Dateien abgelegt werden können,
- Verteilung der Aufgaben in Gruntfile.js auf verschiedene Dateien.
Teil 7: Firefox als GUI für die Automatisierung mit Grunt
In diesem Beitrag wird ein Weg aufgezeigt, Grunt-Automatisierungsaufgaben mittels einer GUI auszuführen, welche als Firefox-Plugin implementiert ist.
Da die Art und Weise der Programmierung eines Firefox-Plugins ebenfalls nur Javascript-Kenntnisse erfordert, liegt es nahe, Firefox in dieser Form einzusetzten.
Es wird in einem zukünftigen Beitrag aber ein andere Weg aufgezeigt, der noch nicht Gegenstand dieses Beitrags ist: Die Realisierung eines komplexen grafischen User Interfaces mit Node.js. Die Möglichkeiten, die sich damit bieten, sind unbegrenzt:
- Staging & Deployment, Maintenance von Web-Portalen
- Haustechnik
- Heimkino
- Schulung und Ausbildung (Steuerung von Arduino und ähnlichen Systemen)
- etc.
Grundsätzlich lässt sich auch Firefox in diese Richtung ausbauen. Aber wenn wir schon Grunt.js lernen und uns damit langfristig auch mit Node.js befassen, ist der Ansatz über Node.js vielversprechender.
Projekt-Teil: Einsatz von Grunt für die Entwicklung hybrider Apps
Im Zusammenhang mit der Reihe zur Entwicklung hybrider Apps wurde ein sinnvoller Einsatz eines Grunt-Skriptes für das Life-Kopieren gezeigt zur Optimierung des Eintwicklungs-Workflows.
Das Grunt-Skript verleiht dem Workflow, dessen Performance durch den Einsatz des Ripple-Emulators schon wesentlich verbessert wurde, den letzten Pfiff, so dass man hybride Apps fast in der gleichen Geschwindigkeit entwickeln kann, wie eine normale Web-Applikation.
Fazit
Ohne zu stark in die Tiefe zu gehen, wurden Kenntnisse vermittelt, die der Entwickler für die Automatisierung seiner Routineaufgaben mit Grunt benötigt. Damit kann er auch komplexe Automatisierungsaufgaben realisieren.
Auf die Darstellung des Einsatzes spezieller Grunt-Module, z.B. für Minification oder spezielle Syntax-Prüfungen und Compilierungen (z.B. SASS) wurde verzichtet, da ein Entwickler mit den hier vermittelten Kenntnissen keine Probleme haben dürfte, sich in diese Module einzuarbeiten und eine Konfiguration entsprechend seinen ganz individuellen Bedürfnissen zusammenzustellen.