Prozessautomatisierung für komplexe Webanwendungen mit Grunt.js
Bitte gehen Sie sicher, dass git, node.js, npm und grunt auf Ihrem Rechner installiert sind.
git --version
> git version 1.8.5.2 (Apple Git-48)
node -v
> v0.10.29
npm -v
> 1.4.14
grunt --version
> grunt-cli v0.1.13Die Files package.json und Gruntfile.js sind das Grundgerüst für unseren grunt Prozess.
Wir installieren nun das grunt Packet.
npm install --save-dev gruntHat alles geklappt verifizieren wir das mit unserem ersten grunt Befehl.
grunt hello
> Running "hello" task
> OK
> Alles funktioniert wie es soll.
> Done, without errors.Wir installieren und laden notwendige tasks…
npm install grunt-contrib-watch grunt-contrib-connect --save-dev… und konfigurieren sie so, dass unser HTML über HTTP ausgeliefert und bei Veränderungen sofort neugeladen wird.
npm install grunt-contrib-less --save-devnpm install grunt-contrib-concat --save-devDie zwei JavaScript Dateien im Order app/scripts/ sollen zu einer main.js im selben Ordner konkatiniert werden.
Das Gruntfile wird größer und unübersichtlicher. Im scripts und styles Ordner tummeln sich teils Quell- teil kompiliere Dateien. Unsere Task Konfiguration wird umständlich weil wir die kompilierten Datein aussparen müssen. Es wird Zeit aufzuräumen.
Gruntfile verkürzen und nie wieder Tasks laden:
npm install load-grunt-tasks grunt-contrib-copy grunt-contrib-clean --save-devIm Gruntfile alle grunt.loadNpmTasks ersetzen durch ein einziges require('load-grunt-tasks')(grunt). Die Pfad-Redundanzen können mittels templating aufgelöst werden. Die Quelldateien werden von den kompilierten Dateien getrennt. Der entstandene build Ordner muss vor jedem Durchlauf gereinigt, und für git ignoriert werden. Die index.html Datei muss in den build Ordner kopiert werden.
Während der Entwicklung möchten wir schnell neue Versionen unseres Codes ausprobieren, doch für das Deployment optimieren wir lieber die Ladezeit und minifizieren die Dateien.
npm install grunt-contrib-uglify --save-devWir legen verschiedene Tasks für das Entwickeln und den Produktionseinsatz an.
Beim Speichern schon die Benachrichtigung bekommen, ob der geschrieben Code auch JSHint kompatibel ist? Kein Problem.
npm install grunt-contrib-jshint --save-devBeim Erstellen von Releases kann viel falsch laufen. Mit grunt-githooks und grunt-bump können wir Fehler vermeiden.
npm install grunt-bump grunt-githooks --save-devSelbst zum Task Autor zu werden ist gar nicht schwer und eröffnet viele neue Möglichkeiten. Wir benutzen die grunt.registerTask API, um einen Task anzulegen, der die Version aus dem package.json liest und ins Terminal schreibt.