NPM: Simply Build

Grunt, Gulp und wie sie alle heißen sind Segen und Fluch zugleich. Einerseits erleichtern sie einem die Arbeit zunächst einmal, indem sie richtig eingesetzt den Build-Prozess vereinfachen. Andererseits funktionieren Sie auch nur bedingt zuverlässig, da sie oft einfach ewig viele Dependencies haben. Irgendwo hakt es immer. Vor nicht allzu langer Zeit versuchte ich mal wieder ein älteres Projekt zum Laufen zu bekommen und in meiner Verzweiflung rief ich aus... "Jetzt bau's halt einfach!" So entstand Simply Build.

Einführung

Natürlich ploppte nicht einfach ein fertiges Programm auf meinem Screen auf. Sowas passiert nur in meinem feuchten Entwickler-Träumen. Aber der Wunsch war geboren einen eigenen Task Runner zu schreiben, der zum einen modular genug war, dass man Tasks problemlos zwischen Projekten hin und her schieben konnte. Andererseits sollte er mit weniger Dependencies auskommen und einfach agnostischer funktionieren.

Darum ist Simply Build (oder Simply) eher ein Helper-Tool, welches einem hilft einen einfachen, wartbaren und modularen Workflow für die täglichen Entwicklungsaufgaben zu erstellen. Simply ist schon vom Design her modular gedacht und das Teilen, Hinzufügen oder Entfernen eines Tasks ist so einfach wie einen Ordner zu kopieren oder zu entfernen.

Der Workflow ist in Tasks unterteilt. Tasks werden durch Unterordner in einem einstellbaren Root-Verzeichnis repräsentiert. Tasks können jeweils ihre eigenen Abhängigkeiten definieren. Diese werden jeweils mit einfacher npm-Logik verwaltet.

Ein einfaches Beispiel

Lasst mich Euch an einem einfachen Beispiel demonstrieren, wie Simply funktioniert. Alles was dieses Tool tut, ist in einem Ordner tasks nach Unterordnern zu suchen. Diese Unterordner repräsentieren Eure Tasks. Alle Skripte, die Ihr in diese Ordner legt, werden von Simply ausgeführt.

Ein einfacher Setup könnte als so aussehen:

./tasks/compile/babelify.js
./tasks/compile/uglify.js
./tasks/test/jshint

Dies würde nun zwei Tasks definieren: compile & test. Um diese Tasks einzeln auszuführen, müsstet Ihr jeweils simply compile oder simple test aufrufen. Skripte können entweder JavaScript-Dateien, Shell-Skripte, Binaries oder alles andere sein, welches in Eurem Betriebssystem als ausführbare Datei gilt.

Probiert das Beispiel einfach aus. Den Code dazu findet Ihr hier: https://github.com/christianhanne/npm-simply-build-example

Installation & Benutzung

Installiert Simply am besten global über NPM:

$ npm install simply-build -g

Einen einzelnen Task könnt Ihr so aufrufen:

$ simply task

Mehrere Tasks hintereinander könnt Ihr dann wie folgt aufrufen:

$ simply task1 task2 task3

Und schließlich könnt Ihr Euch mit folgenden Befehl eine Liste aller erkannten Tasks anzeigen lassen:

$ simply --list

Abhängigkeiten

Jeder Task kann seine eigenen Abhängigkeiten definieren. Erstellt einfach eine JSON-Datei im Ordner des jeweiligen Tasks und fügt Abhängigkeiten unter Benutzung der NPM-Syntax hinzu. Der Einfachheit halber könnt Ihr npm init und npm install verwenden, um die Abhängigkeiten zu verwalten. Installiert oder aktualisiert nun die Task-Dendencies wie folgt:

$ simply --install

Bitte beachtet, dass es derzeit noch keine Möglichkeit gibt mit Konflikten zwischen gleichen Paketen umzugehen.

Weitere Informationen findet Ihr außerdem im Repository auf Github.

Noch keine Kommentare vorhanden.