2016-04-18 8 views
1

Hier bekomme ich keine Ausgabe und der Befehl wird für immer:Ausgabe in Grunt anzeigen, während der Befehl ausgeführt wird?

grunt.registerTask('serve', function() { 
    var done = this.async(); 

    grunt.util.spawn({ 
     cmd: 'jekyll', 
     args: ['serve'], 
     stdio: 'inherit' 
    }, function (err, res, exit_code) { 
     res.stdout && console.info(res.stdout); 
     exit_code && console.error(res.stderr); 
     done(err); 
    }); 
}); 

Ich mag Ausgang (und der Befehl, bis Fehler laufen oder zu unterbrechen).

Antwort

1

Try this:

grunt.registerTask('serve', function(){ 
    var done = this.async(); 

    var child = grunt.util.spawn({ 
     cmd: 'jekyll', 
     args: ['serve'] 
    }, function(){ 
     ... 
    }); 

    child.stdout.pipe(process.stdout); 
    child.stderr.pipe(process.stderr); 
}); 

See: Grunt spawned process not capturing output

0

Sie grunt log können

folgende Funktionen zur Verfügung

grunt.log.write(msg) 
grunt.log.writeln([msg]) 
grunt.log.error([msg]) 
grunt.log.errorlns(msg) 
grunt.log.ok([msg]) 
grunt.log.oklns(msg) 
grunt.log.subhead(msg) 
grunt.log.writeflags(obj, prefix) 
grunt.log.debug(msg) 
1

Danke für die Antworten, @ Lihau-Tan Nähe war nach rechts.

Kombination diese Antwort mit meinem Versuch, und ich kam mit dieser Lösung:

grunt.registerTask('serve', function() { 
    var child = grunt.util.spawn({ 
     cmd: 'jekyll', 
     args: ['serve', '-P', process.env.PORT || 4001], 
     stdio: 'inherit' 
    }, this.async()); 

    child.stdout.pipe(process.stdout); 
    child.stderr.pipe(process.stderr); 
});