Grunt-lagen: Reloaded

the next big thing  –  0 Kommentare

Wer Grunt zur automatisierten Ausführung von Codeanalyse und Unit-Tests verwendet, ist gut beraten, die verwendeten Module regelmäßig zu aktualisieren. Dies gilt selbst dann, wenn neu eingeführte Funktionen nicht von Interesse sind, schließlich werden auf diesem Weg auch Fehler behoben.

Doch kein Licht ohne Schatten: So behebt beispielsweise die im Juli 2013 veröffentlichte Version 0.6.2 von grunt-mocha-test das Problem fehlender Callstacks im Fall von abgebrochenen Unit-Tests, führt zugleich allerdings eine veränderte, zur vorigen Version nicht kompatible Syntax zur Konfiguration ein.

Ähnlich verhält es sich mit dem Modul grunt-contrib-watch, dessen interrupt-Option zwar zwischenzeitlich wie in der Dokumentation beschrieben verlässlich funktioniert, das aber ebenfalls auf eine neue Syntax zur Konfiguration setzt.

In beiden Fällen war man daher gezwungen, die Datei Gruntfile.js anzupassen. Um die Syntax der einzelnen Module nicht für jedes Projekt erneut nachschlagen zu müssen, ist eine aktualisierte Vorlage für diese Datei hilfreich:

'use strict';

module.exports = function (grunt) {
grunt.initConfig({
jshint: {
files: [ '**/*.js', '!node_modules/**/*.js', '!public/**/*.js' ],
options: {
jshintrc: 'jshint.json'
}
},

mochaTest: {
test: {
options: {
bail: true,
reporter: 'spec',
ui: 'tdd'
},
src: ['test/**/*.js']
}
},

watch: {
scripts: {
files: [ '**/*.js', '!node_modules/**/*.js' ],
tasks: [ 'default' ],
options: {
interrupt: true
}
}
}

});

grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-mocha-test');

grunt.registerTask('default', [ 'jshint', 'mochaTest' ]);
};

Diese Version der Datei Gruntfile.js funktioniert anstandslos mit den aktuellen Versionen der einzelnen Module und lässt sich daher wiederum als Bestandteil einer Projektvorlage auf Basis von grunt-init verwenden.

tl;dr: Einige Zusatzmodule für Grunt, unter anderem grunt-mocha-test und grunt-contrib-watch, beheben in neuen Versionen zwar durchaus Fehler, führen zugleich aber auch eine neue, zu den bisherigen Versionen inkompatible Syntax zur Konfiguration ein. Daher ist eine aktualisierte Vorlage für die Datei Gruntfile.js durchaus hilfreich.