Unsere Kunden sind immer wieder ein Quell guter Inspi­ra­tionen. In diesem Fall wollte unser Kunde seine Webseiten aus der Git-Quelle auf dem Server fertig zusam­men­bauen. Das ist an sich noch nichts beson­deres. Doch die Optimierung der HTML-Dateigrößen durch einen HTML-Kompressor gehört heute zum guten Ton der Entwick­lung.

In besagtem Projekt wird UglifyJS verwendet. Um nicht Node.js - die Ausfüh­rungs­um­gebung für UglifyJS - auf dem Server instal­lieren zu müssen haben wir JSLinker entwi­ckelt.

JSLinker baut aus der Node.js-Laufzeitumgebung und einer Node.js-Applikation eine einzelne ausführbare Datei.

JSLinker instal­lieren

Die Benutzung von JSLinker setzt eine instal­lierte Node.js- oder io.js-Umgebung voraus. Danach ist die Instal­lation von JSLinker einfach.

npm install -g jslinker

Ab sofort steht der Befehl jslinker auf der Komman­do­zeile zur Verfü­gung.

JSLinker benutzen

JSLinker kann sowohl lokale Node.js-Applikationen als auch npm-Pakete umwan­deln. Außerdem muss man sich für die Zielplattform entscheiden.

JSLinker mit einem npm-Paket verwenden

JSLinker verwendet das von dem Paket­be­treuer festgelegt Start­skript. Dies ist in der packa­ge.json unter `script­s.­start definiert. Ebenfalls wird - ohne weitere Parameter - die aktuelle Plattform als Zielsystem für die ausführbare Datei verwendet.

jslinker --npm uglify-js

Leider hat UglifyJS kein Skript als Start­skript definiert. Daher die Fehler­meldung Error: No start script found, please specify by command line parameter --main. UglifyJS wird per bin/uglifyjs gestartet.

jslinker --npm uglify-js --main bin/uglifyjs

Wenn die Meldung ---created erscheint hat alles funktio­niert. Diese Datei kann jetzt ausge­führt werden, ohne dass Node.js instal­liert sein muss.

JSLinker für eigene Projekte verwenden

JSLinker kann auch ohne --npm verwendet werden. Dazu muss im aktuellen Verzeichnis eine packa­ge.json bestehen.

jslinker

Ausführbare Datei für andere Platt­formen bauen

Als Standard baut jslinker eine ausführbare Datei für die aktuelle Platt­form. Dieses Verhalten kann über Parameter verändert werden. Alle Parameter sind mit jslinker --help zu sehen.

jslinker --engine iojs --version v2.3.1 --platform linux --arch x64

Die erstelle ausführbare Datei kann unter Linux auf einer 64-Bit-Architektur ausge­führt werden. Als Laufzeit­um­gebung wird io.js in der Version 2.3.1 verwendet.

Techni­scher Hinter­grund

Die erstellte ausführbare Datei ist ein kleines Shell­skript mit angehängter .tar.gz-Datei. Dieses Archiv wird in ein tempo­räres Verzeichnis entpackt. In dem Archiv ist sowohl die Node.js-Laufzeitumgebung als auch die Node.js-Anwendung inklusive aller NPM-Abhängigkeiten enthalten. Das Skript gibt alle eigenen Parameter weiter an das definierte Start­skript. Nach der Ausführung wird das temporäre Verzeichnis wieder gelöscht.

Für die Ausführung des Shell­skripts werden sowohl tar inklusive GZip, awk als auch tail benötigt. Daher kann jslinker derzeit nur ausführbare Dateien für Linux und Apple OS X bauen.