Coffeescript nur nach Änderung kompilieren

Mein Build- und Entwicklungshilfe-Script für Node-Projekte kann bereits das Wesentliche: Coffeescript kompilieren, Tests ausführen, einen Server starten und beenden sowie das Dateisystem überwachen, um die anderen Aufgaben nach jedem Speichern automatisch auszuführen. Die schnell geschriebene Build-Task kompilierte bisher jede Coffeescript-Datei, die sie finden konnte. Um nach dem Speichern möglichst schnell Testergebnisse zu erhalten, sollte nur neu gebaut werden, was sich auch geändert hat. weiterlesen

Bash-Build-Script mit Desktop-Nachrichten und Dateiüberwachung

Ich habe mich die letzte Zeit viel mit Grunt herumgeschlagen. Grunt ist ein umfangreiches und mächtiges Build-Werkzeug für Node, dennoch hatte ich stets das Gefühl, dass die Konfiguration umständlicher als der wirkliche Nutzen ist. Ich habe daher mit einem Build-Script auf Bash-Basis begonnen, welches vom Nutzer spezifizierte Aufgaben nacheinander ausführt. Diese frühe Version unterstützt Coffeescript-Kompilierung, Testausführung und Dateisystemüberwachung, welche die anderen Tasks bei jeder Änderung automatisch ausführt. Nach dem Speichern bekommt man so stets die direkte Rückmeldung, ob die Unittests erfolgreich waren. weiterlesen

Node-Coding-Style: Vergleich zwischen Node FS und NPM

Noch immer führt die Suche nach einem Coding-Style für Node.js ins Leere. Da man sich für ein gleichmäßiges Code-Bild auch ohne offizielle Vorgabe Richtlinien schaffen muss, habe ich hier einen Vergleich zweier wesentlicher Module vorgenommen: Nodes integriertes FS und das unangefochtene Paketwerkzeug NPM.

Ich betrachte für mich derzeit relevante Punkte, wie etwa:

  • Einrückung
  • if-Statements
  • Stringausdrücke
  • Variablendeklaration
  • Semikolons

Mein Fazit: Den einen Node-Coding-Style gibt es nicht. Selbst die beiden Kernmodule weisen elementare Unterschiede auf. Den eigenen Stil muss man sich nach wie vor selbst zusammensuchen.

Eine Alternative: In Coffeescript ist der Code-Style Teil der Syntax, was konsistenten Code begünstigt.
weiterlesen

Current Working Directory in Node

Nutzt man verschiedene Node-Applikationen, die sich gegenseitig aufrufen, kann dies zu Problemen mit relativen Pfaden führen. Ein require('./...'); schlägt schnell fehl, wenn Programm A Programm B im eigenen Arbeitsverzeichnis ausführt. B kann das CWD ändern, etwa von einer Datei im Rootverzeichnis:

// in B/app.js
process.chdir(__dirname);
// oder in B/sub/file.js
process.chdir(__dirname + '/../');

Ist kein Aprilscherz. Dafür wählt Youtube endlich seinen Gewinner:

[youtube clip_id=“H542nLTTbu0″]

Live-Unittest-Entwicklungsumgebung für Node

Und wieder mal mehr Zeit in die Arbeitsvorbereitung als in die eigentliche Arbeit gesteckt. Eigentlich wollte ich in einem bestehenden Node-Projekt auch mit Coffee-Script arbeiten können. Herausgekommen ist eine Entwicklungsumgebung, in der man jede auf Node basierende Sprache wie eben Coffee- oder auch Type-Script verwenden kann, eine die Änderungen in Echtzeit deployt, die Unittests ausführt und eventuelle Fehler via Desktop-Benachrichtigung anzeigt. Das Ganze funktioniert unabhängig vom verwendeten Editor bzw. verwendeter IDE. Wer in Sublime Text noch Strg+B drückt, macht es sich zu kompliziert… weiterlesen

Heterogene Webserver-Umgebung mit Nginx zusammenfassen

Nginx ist ein recht schmaler Webserver, der dank seiner Forward-Proxy-Eigenschaften sehr gut dazu geeignet ist, verschiedene Webserver unter einem Host zusammenzufassen.

„Für jeden Job das passende Werkzeug“ führt gern zu folgenden Strukturen auf Server und Entwicklungsumgebung:

http://localhost:8080/tomcat-project
http://localhost:8081/node-project
http://localhost:8082/php-project

Ein Albtraum für jeden Ajax-Entwickler. Mit Nginx lassen sich verschiedene Hosts und Ports zusammenfassen.

weiterlesen

Node.js unter Ubuntu installieren

Im Repository von Ubuntu 12.04 findet sich das Paket nodejs in Version 0.6.12. Wer es lieber aktuell mag, kann sich den JS-Server auch einfach selber bauen (entsprechende Build-Tools wie build-essentials müssen installiert sein):

wget http://nodejs.org/dist/v0.8.14/node-v0.8.14.tar.gz
tar -xf node-v0.8.14.tar.gz
cd node-v0.8.14
./configure
make
sudo make install

weiterlesen