© saicle/Shutterstock.com
Kolumne: The Good Parts

JavaScript-Werkzeuge im Teenageralter


Große JavaScript-Projekte sind heute keine Ausnahme mehr, sondern die Regel. Komplexe Systeme bestehen immer aus diversen unterschiedlichen Komponenten, deren Zusammenspiel ein großes Ganzes ergibt. Um einen reibungslosen Ablauf während der Entwicklung zu gewährleisten, ist es wichtig, die einzelnen Applikationsteile sowie das eingesetzte Tooling zu verknüpfen und unter Kontrolle zu halten.

In meinem Job habe ich tagtäglich mit diversen unterschiedlichen Build- und Infrastruktur-Set-ups zu tun. Diese sind nicht nur auf JavaScript beschränkt, sondern beziehen häufig weitere Sprachen und Technologien wie Datenbanken, Messaging-Systeme und Suchindizes mit ein. Wenn ich kein existierendes Set-up verwende oder für Kunden erweitere, ist es meist meine Aufgabe, problemlösungsspezifische Set-ups zu entwerfen. Auch außerhalb meiner täglichen Arbeit benötige ich oft entsprechende Umgebungen für Prototypen und Open-Source-Projekte, an denen ich in meiner Freizeit arbeite. Um nicht in jedem dieser Fälle wieder bei Null beginnen zu müssen, habe ich mir eine Art Baukasten [1] geschaffen, den ich – mit entsprechenden Anpassungen versteht sich – in nahezu jedem der zuvor beschriebenen Fälle einsetze. Eine derartige Grundlage spart mir viel Zeit bei der Entwicklung eines komplexeren Systems, ohne dabei auf meine gewohnte Toolchain verzichten zu müssen. Dieser Artikel beschreibt dieses Set-up und die dafür über Jahre hinweg ausgewählten Technologien im Detail. Außerdem beleuchte ich einige der Hintergründe, die zu diesen Entscheidungen geführt haben. Das Ergebnis ist ein fast perfektes Build-System für die meisten JavaScript-Projekte – oder zumindest ein sehr solider Grundstock.

Problemstellung

In nahezu jedem Projekt werde ich mit den gleichen Problemstellungen konfrontiert:

  • Statische Codeanalyse (Linter, Coding-Style, Metriken …)

  • Testausführung (Unit Tests in einer Crossbrowser-Umgebung)

  • Externe Abhängigkeitsverwaltung (Libraries und Tools)

  • Interne Abhängigkeitsverwaltung (korrekte Reihenfolge projektinterner Pakete)

  • Paketierung für den Produktivbetrieb

  • Management aller dieser Aufgaben in einem übergreifenden Build-System

Natürlich existieren neben den genannten noch diverse weitere spezielle Aufgaben. Jedoch handelt es sich bei der aufgeführten Liste um Anforderungen, die sich für die Mehrheit aller Projekte wiederholen. Nachdem ich über die letzten Jahre verschiedenste Tools für jede der Problemstellungen im Einsatz hatte, haben sich nach dem aktuellen Stand ganz...

Neugierig geworden?

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