2016-04-18 5 views
1

私は何も出力を取得していないと、コマンドは永久に実行されます。Grunt asコマンド実行時の出力を表示しますか?ここで

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); 
    }); 
}); 

私は、出力(およびコマンドがエラーになるまで実行または中断すること)します。

答えて

1

ことは、これを試してみてください:

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); 
}); 

参照:Grunt spawned process not capturing output

0

あなたは

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

利用可能な機能に続きgrunt log

を使用することができますLihau-タンが近かった@答えてくれてありがとう、右のものに。

私の試みとその答えを組み合わせると、私はこの解決策を考え出した:

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); 
}); 
関連する問題