2013-05-10 6 views
5

Ich möchte eine Grunt-Datei erstellen, die 3 Grunt Tasks seriell hintereinander ausführt, unabhängig davon, ob sie fehlschlagen oder bestanden werden. Wenn eine der grunts-Aufgabe fehlschlägt, möchte ich den letzten Fehlercode zurückgeben.Gruntfile bekomme Fehlercodes von Programmen seriell

Ich habe versucht:

grunt.task.run('task1', 'task2', 'task3'); 

mit der --force Option beim Laufen.

Das Problem dabei ist, dass --force angegeben wird Fehlercode 0 unabhängig von Fehlern zurückgegeben.

Dank

Antwort

7

Verwendung grunt.util.spawn: http://gruntjs.com/api/grunt.util#grunt.util.spawn

grunt.registerTask('serial', function() { 
    var done = this.async(); 
    var tasks = {'task1': 0, 'task2': 0, 'task3': 0}; 
    grunt.util.async.forEachSeries(Object.keys(tasks), function(task, next) { 
    grunt.util.spawn({ 
     grunt: true, // use grunt to spawn 
     args: [task], // spawn this task 
     opts: { stdio: 'inherit' }, // print to the same stdout 
    }, function(err, result, code) { 
     tasks[task] = code; 
     next(); 
    }); 
    }, function() { 
    // Do something with tasks now that each 
    // contains their respective error code 
    done(); 
    }); 
}); 
+0

Sie haben ein zusätzliches Komma nach 'entscheidet sich: {stdio: 'erben'}' aber schön vielen Dank !!! – GTDev

+0

Es ist absichtlich da;) Nachgestellte Kommas sind cool in Node> = 0.8. Zumindest denke ich, hey –