Buid-Management mit Grunt in JavaScript

Wer mit umfangreichen JavaScript-Dateien hantiert, wie es beispielsweise bei Angular Projekten der Fall ist, braucht ein kleines Helferlein, welches sich um lästige Details automatisiert kümmert. Der ebenfalls in JavaScript implementierte Task-Runner Grunt ist ein solches praktisches Werkzeug. Grunt gehört somit in die Kategorie der Build Tools und übernimmt monotone, wiederkehrende Aufgaben. Ob JavaScript Minimierung, SCSS-Processing, automatisierte Unit-Tests oder das Management von externen Abhängigkeiten: All das gehört zum Aufgabengebiet von Grunt.


Damit die Ergebnisse der Automatisierung immer die gleiche Ausgabe bei gleicher Eingabe produzieren und somit wiederholbar bleiben, sollte man auf spezialisierte Werkzeuge zurückgreifen. Build Tools erfüllen diese Anforderung, ganz egal, auf welchem System sie ausgeführt werden. Bei selbiger Eingabe wird immer die gleiche Ausgabe erzeugt. Die Plattformunabhängigkeit ist ein wichtiges Merkmal von Buildwerkzeugen und auch der wichtigste Grund, wieso einfache Shell- oder Batch-Skripte nicht genügen. Denn die Aufgaben, die mit Tools wie Grunt automatisiert werden, sollen nicht nur auf dem Rechner des Entwicklers laufen, sondern auch auf CI-/CD-Servern.

Wer für sein JavaScript Projekt den Task-Runner Grunt einsetzt, nutzt nicht nur ein mächtiges Werkzeug, sondern erleichtert sich merklich den Entwickleralltag. Dank der Automatisierung werden Fehler, die durch monotone, wiederkehrende Aufgaben entstehen, vermieden. Zusätzlich wird das Team von langweiligen Tätigkeiten befreit. Es ergibt sich somit mehr Raum, sich auf das eigentliche Entwicklungsgeschäft, die Implementierung neuer Funktionalität, zu konzentrieren. Um eine bessere Vorstellung davon zu erhalten, wie Grunt die einzelnen Programmierer im Team entlasten kann, habe ich ein kleines Szenario beschrieben, das so oder ähnlich den meisten sicherlich bekannt ist.

Ein typisches Einsatzszenario von Grunt findet man in der Komprimierung von JavaScript Dateien. Eine möglichst starke Komprimierung dieser oft umfangreichen Ressourcen verbessert die Ladezeiten von Webanwendungen signifikant. Wenn die komprimierte Variante zum Einsatz kommt, erfährt der Endnutzer eine merkliche Verbesserung. Aber auch das Kompilieren von SCSS-Dateien zu vom Browser verarbeitbarem CSS mit entsprechender Komprimierung gehört zum Alltag eines FrontEnd Entwicklers. Moderne Benutzerschnittstellen beinhalten allerdings eine Vielzahl an unterschiedlichen Bibliotheken von Fremdanbietern. Diese Abhängigkeiten gilt es, regelmäßig auf neuere Versionen zu aktualisieren und auf mögliche Sicherheitsrisiken hin zu untersuchen. Daher ist ein leistungsfähiges Dependency Management in modernen Softwareentwicklungsprojekten kaum noch wegzudenken. Bevor ich hier zu ausführlich werde, belassen wir es erst einmal bei den erwähnten Einsatzszenarien des JavaScript Task-Runners Grunt und schauen uns an, wie man diesen in das eigene Projekt integriert.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.

WordPress REST API ist nicht erreichbar

Hin und wieder kommt es vor, das im Umgang mit WordPress die REST API nicht angesprochen werden kann. Das erweist sich dahingehend als problematisch, weil so wichtige Funktionen der Blog-Software nicht genutzt werden können. Neben einer Vielzahl von Plugins versagt, auch der Gutenberg Bock Editor seinen Dienst. Will man einen Artikel speichern kommt oft eine kryptische Meldung, das JSON einen Fehler verursacht hat.

Wir können also bereits ohne tiefgreifende Untersuchung sehr schnell an der Funktionsweise unserer WordPress Installation feststellen, ob die REST API erreichbar ist. Wer dennoch auf Nummer sicher gehen will und schwarz auf weiß sehen möchte, ob bei der eigenen WordPress Installation die REST API korrekt arbeitet, kann dies auf zwei verschiedene Art und Weisen tun. Die erste Möglichkeit ist der Aufruf der URL <meine-wordpress-installtion>/wp-json/. Wobei der Tag durch die eigene IP oder Domain zum WordPress ersetzt werden muss. Wird daraufhin ein JSON Objekt wie in Abbildung 1 ausgegeben ist alles korrekt.

Kommt hingegen eine Fehlermeldung wie in Abbildung 2 können Sie sich sicher sein, das die REST API nicht erreichbar ist.

Abonnement / Subscription

[English] This content is only available to subscribers.

[Deutsch] Diese Inhalte sind nur für Abonnenten verfügbar.