© Excellent backgrounds/Shutterstock.com
Inkrementelles Frontend-Build-System auf Node.js-Basis

gulp


Die Frontend-Entwicklung hat in den letzten zehn Jahren stark an Komplexität gewonnen. Während sie sich früher vor allem mit statischem HTML und CSS beschäftigte, hat ihr Endprodukt heute zunehmend den Charakter einer vollwertigen Anwendung. Ein Build-System hilft, den hierfür benötigten Code zu modularisieren und erlaubt damit die Trennung von Belangen und Verantwortlichkeiten. Das Build-System ermöglicht inkrementelles Testing und Effizienz bei der Erledigung von Routineaufgaben wie beispielsweise Minifikation oder Konkatenation. Dabei sollten alle Aufgaben reproduzierbar, vollautomatisch und plattformunabhängig laufen.

Video: Unternehmenskritische Anwendungen mit JavaScript

Die hauptsächliche Programmiersprache eines Front­end-Entwicklers ist JavaScript. Seit 2009 mit Node. js [1] eine serverseitige JavaScript-Laufzeitumgebung veröffentlicht wurde, ist es deshalb naheliegend, das Build-System in derselben Sprache zu schreiben. Dies nicht nur in Honorierung von Jeff Atwoods Diktum „Any application that can be written in JavaScript will eventually be written in JavaScript“ [2], sondern vielmehr aus der Notwendigkeit heraus, das Build-System selbst unterhalten und weiterentwickeln zu können. gulp ist heute eines der meistverbreiteten Build-Systeme auf Node. js-Basis. Gründe dafür sind eine hohe Performance, die einfache Verwendung sowie ein hochwertiges Plug-in-Ökosystem.

Merkmale von gulp

gulp ist streambasiert. Ein Task liest standardmäßig Dateien vom Dateisystem, streamt sie durch eine beliebige Anzahl Plug-ins und schreibt das Resultat zurück auf die Festplatte. Insbesondere bei mehrstufigen Tasks ist es bezüglich Performance ein idealer Ansatz, da wiederholte Lese-/Schreibvorgänge andernfalls schnell zum limitierenden Faktor werden. Zu berücksichtigen ist, dass der Inhalt einer Datei standardmäßig komplett gebuffert wird, um das Handling zu erleichtern. Sollte das in Ausnahmefällen nicht erwünscht sein, kann das initiale Buffering deaktiviert werden.

Alternative Build-Systeme wie Grunt [3] zeichnen sich unter anderem dadurch aus, dass eine Task nicht programmiert, sondern konfiguriert wird. Dadurch können Einstiegshürden gesenkt werden, bei komplexen Tasks stößt der Ansatz jedoch bald an seine Grenzen. gulp geht deshalb den entgegengesetzten Weg: Jede Task wird explizit in Form von Code definiert. Das führt zu etwas mehr Schreibarbeit, das Resultat ist jedoch verständlicher und damit leichter wartbar.

Für Plug-ins gelten strikte Regeln [4]: Sie d...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang