Release – SGC Toolchain V3

Release – SGC Toolchain V3

Philipp Nowinski 03. Dezember 2018 Releases

1 Kommentar // Lesezeit: 6 min.

Nach etwas weniger als anderthalb Jahren hat unser Command-Line-Tool SGC heute den nächsten Meilenstein geschafft: Wir veröffentlichen die lang ersehnte Version 3!

Der Sprung auf die Versionsnummer 3 ist in jeder Hinsicht ein Major-Update. Neben den üblichen Bugfixes und kleinen neuen Features haben wir die komplette Software-Basis umstrukturiert und weitestgehend neu geschrieben. Das hat es zum Einen möglich gemacht unsere Abhängigkeiten zu reduzieren und übersichtlicher zu gestalten, vor allem aber erlaubt uns die neue Architektur sehr viel einfacher neue Features einzubauen und die Toolchain stetig zu erweitern. Aber lasst uns im Detail durchgehen was den v3 Release ausmacht.

Neuer Core – kein Gulp mehr

Gulp war bisher das Herzstück der SGC. Wenn man die Gesamtheit der Software als Orchester betrachtet, lassen sich die einzelnen Tasks auf einzelne Instrumente aufteilen. Jedes einzelne Instrument spielt dabei seine eigene, sehr spezifische Rolle und Gulp fungierte als Dirigent, der jedem Task seinen Einsatz gegeben hat, so wie es die Partitur des Nutzers vorsah. Und Gulp hat diesen Job sehr gut gemacht.

Nach und nach stand uns dieser Dirigent aber mehr im Wege, als dass er uns unterstützt hätte. Das liegt allerdings nicht daran, dass er inkompetent, oder mit dem Alter senil geworden wäre. Sondern einfach daran, dass im Laufe der Zeit immer deutlicher wurde was genau wir eigentlich mit unserem Tool abdecken möchten, wo die Stärken und Schwächen in unserem Workflow liegen. Das Projekt ist gewachsen und gereift und damit auch unsere Vorstellungen davon wie welche Teile zu funktionieren haben. Wir sind als Autoren des Tools immer mehr zu einem zweiten Dirigenten geworden und das führte dazu, dass wir uns gegenseitig ständig auf die Füße getreten sind.

Weniger Code, besserer Code, schnellere Iterationen

Das äußerte sich vor allem – um die Metapher jetzt mal zu verlassen – bei der Integration neuer Features. Insbesondere Kleinigkeiten für die es nicht unbedingt ein Gulp-Plugin benötigt, waren nur mit viel Anstrengung und schwierig zu wartendem Code realisierbar. Dank des kompletten Rewrites und unserer neuen Architektur sind viele Features die einen früher viel Zeit und Nerven gekostet haben jetzt mit wenigen Zeilen JavaScript-Code schnell integriert.

Ein kalter Wind in Dependency-Hell

Ein sehr angenehmer Nebeneffekt des Rewrites ist, dass wir nun einen deutlich besseren Überblick über unseren Dependency-Tree haben. Dass ein npm install das halbe Internet herunterlädt, ist ja allgemein bekannt. Dank mehr Kontrolle über den Core gibt es jetzt eine Ebene weniger, die Abhängigkeiten installiert, da wir Bibliotheken wie libsass oder imagemin jetzt einfach direkt nutzen können. Die Abstraktion durch das Gulp-Plugin fällt weg und somit wird der Abhängigkeits-Baum um ein paar Äste gestutzt.

Zucker für die Augen

Ein weiterer Nebeneffekt der sich durch das gewonnenen Maß an Kontrolle über den Code bemerkbar macht, ist die Gestaltung der Konsolen-Ausgabe. Bislang war der Output der SGC ein Mischmasch aus verschiedenen Bibliotheken. String mit Timestamp vorne? – klar, gulp.util! Kein Timestamp vorne, aber formatierte Fehlermeldung? – Ah, Stylelint! Wieder kein Timestamp, dafür zwei mal dieselbe Fehlermeldung, verschieden formatiert (WTF?) – Hallo ESLint.

In meiner täglichen Arbeit schaue ich viel auf diesen Output. Und gerade, wenn es dein Job ist, Code zu schreiben, damit Dinge besser aussehen als vorher, ist es ziemlich frustrierend, wenn das Tool, das dich dabei unterstützen soll, so unfassbar inkonsistent gestaltet ist. Ganz zu schweigen davon, dass inkonsistent gestalteter Output es einem erschwert, diesen mental zu parsen, die wichtigen Informationen auf einen Blick zu erfassen. Wenn jede Ausgabe anders aussieht, muss ich mir x-mal so viele Patterns merken wie eigentlich notwendig.

Mit der SGC 3 liefern wir unser eigenes Logging-Modul aus. Jeglicher Output wird davon verarbeitet und weist somit dieselbe Handschrift auf. Generell haben wir diese Gelegenheit genutzt und etwas mehr Liebe in den Konsolen-Output gesteckt. Farbige Hervorhebungen und Einrückungen machen es einem nun leichter die wichtigen Dinge herauszulesen. Der Output beider Linter folgt jetzt demselben Stil und auch Fehlermeldungen lassen sich einwandfrei erkennen.

  

Push-Notifcations

Mit der neuen Version haben wir auch erstmals Push-Notifications für die Desktop-Umgebung implementiert. Insbesondere bei der Verwendung des Watchers ist es mir früher oft passiert, dass ich fehlerhaften Code abgespeichert habe, welcher nicht kompiliert werden konnte. In der Regel gingen dann mindestens ein paar Minuten für Debugging ins Land, bis ich einen Blick auf die Konsole geworfen habe. Ab der Version 3 informiert die SGC einen nun über auftretende Fehler auch per Desktop Push-Notification. So passiert es einem nicht so schnell, dass Fehler übersehen werden. Die Benachrichtigungen greifen übrigens auch bei Linting-Fehlern. So können einem diese während der Entwicklung nicht mehr entgehen. In der Tat haben die Benachrichtigungen bei uns intern dazu geführt, dass so gut wie gar kein formal fehlerhafter Frontend-Code mehr committet wird. Der Grund dafür ist sehr einfach: wenn bei jedem Abspeichern eine Benachrichtigung aufploppt, ist das schnell ziemlich nervig ¯ \_(ツ)_/¯.

Mehr Features

Natürlich gibt es auch sonst ein paar neue Features die erwähnt werden wollen. Im JavaScript-Bereich setzen wir nun die aktuellste Version von Babel.js ein. Das bedeutet, dass die meisten neuen EcmaScript Syntax-Features eingesetzt werden können und die SGC kümmert sich dank Babel um die Kompatibilität mit älteren Browsern. Die Browser die ihr unterstützen müsst, tragt ihr einfach als Browserlist-String in der .sgc-config.json ein. Sogar async/await lässt sich so einsetzen. Dafür müsst ihr allerdings in eurem Frontend-Code noch das Package "@babel/polyfill" installieren. Die SGC findet dieses dann bei der Kompilierung und macht den Code kompatibel.

Weiterhin haben wir die Einstellungen für Image-Optimierung und Kompression von minifizierten Dateien deutlich optimiert. Bei unserer eigenen Website konnten wir dadurch bereits einen deutlichen Performance-Anstieg feststellen.


Überzeugt?

Auf unserer Produktseite sehen Sie die Features der SGC erneut in einer kurzen Übersicht und können die für Sie passende Version auswählen.


Aufteilen der .sgc-config.json

Benutzt ihr einen sgc-scripts Ordner um die SGC durch eigene Kommandos zu erweitern? Wenn ja, könnte dieses Feature für euch nützlich sein. Wir verwenden einen sgc-scripts Ordner der selbst versioniert und von mehreren Projekten geteilt wird. Innerhalb dieses Ordner kann jetzt auch eine .sgc-config.json Datei abgelegt werden, die bei der Ausführung mit der bisherigen Datei zusammengeführt wird. So lässt sich sehr angenehm eine Default-Konfiguration schreiben. Die Konfigurations-Datei des eigentlichen Projektes muss dann nur noch ein paar wenige Einstellungen überschreiben.

We ❤️ OpenSource

Das Schönste kommt zum Schluss: mit der Version 3 der SGC veröffentlichen wir den gesamten Quellcode erstmals als OpenSource. Ab heute ist das Repository auf unserer GitLab-Instanz öffentlich einsehbar. Somit lässt sich das Tool auch sehr einfach per Composer installieren. Das bisherige Lizenz-Model bleibt zwar bestehen, aber es steht euch natürlich frei vor dem Kauf einen Blick auf das Produkt zu werfen.

Zögert auch nicht die Toolchain einfach einmal zu installieren und auszuprobieren, um herauszufinden, ob der Workflow zu euren Projekten passt. Selbstverständlich freuen wir uns auch immer über Feedback, Bugreports, oder sogar Merge-Requests in unserem Bugtracker.

Get it while it's hot

Kunden können sich den neuen Release ab sofort in unserem Shop herunterladen. Bei Fragen rund um die SGC, oder unseren anderen Produkten, kannst du auch gerne jederzeit Kontakt mit uns aufnehmen.


1 Kommentar

  • Stefan Galinski

    Stefan Galinski

    vor 1 Woche

    Ohne die SGC würden wir mittlerweile nicht mehr arbeiten können. Dieses Tool ist das wohl mit am meisten eingesetzte Werkzeug in unserem Unternehmen und genießt entsprechend hohe Aufmerksamkeit. Die [...] Ohne die SGC würden wir mittlerweile nicht mehr arbeiten können. Dieses Tool ist das wohl mit am meisten eingesetzte Werkzeug in unserem Unternehmen und genießt entsprechend hohe Aufmerksamkeit. Die Effizienz und Qualität unseres Codes hat sich seit der Einführung erheblich verbessert.

    Dateien hier ablegen
Dateien hier ablegen