2014-01-15 12 views
49

gulp.watchの末尾にいくつかのbashコマンドを追加して、開発スピードを加速したいと考えています。だから、それが可能かどうか疑問に思っています。ありがとう!ここで「がぶ飲み」本当にgulpでbashコマンドを実行するには?

var spawn = require('child_process').spawn; 
var fancyLog = require('fancy-log'); 
var beeper = require('beeper'); 

gulp.task('default', function(){ 

    gulp.watch('*.js', function(e) { 
     // Do run some gulp tasks here 
     // ... 

     // Finally execute your script below - here "ls -lA" 
     var child = spawn("ls", ["-lA"], {cwd: process.cwd()}), 
      stdout = '', 
      stderr = ''; 

     child.stdout.setEncoding('utf8'); 

     child.stdout.on('data', function (data) { 
      stdout += data; 
      fancyLog(data); 
     }); 

     child.stderr.setEncoding('utf8'); 
     child.stderr.on('data', function (data) { 
      stderr += data; 
      fancyLog.error(data)); 
      beeper(); 
     }); 

     child.on('close', function(code) { 
      fancyLog("Done with exit code", code); 
      fancyLog("You access complete stdout and stderr from here"); // stdout, stderr 
     }); 


    }); 
}); 

何もない - 主に子を使用してhttp://nodejs.org/api/child_process.htmlを処理し、

答えて

45

使用https://www.npmjs.org/package/gulp-shell空想ログに結果を偽装:

+6

gulp-execはgulp-execやgulp-spawnのような別の方法がありますが、gulp-shellはすぐにコマンドの出力を表示します。 – jmu

+4

よりクリーンでより直感的なインターフェースIMOを備えた['gulp-run'](https://www.npmjs.com/package/gulp-run)もあります。 –

+14

gulp-shellがブラックリストに載っています。https://github.com/gulpjs/plugins/blob/master/src/blackList.jsonを参照してください。 –

74

私は行くだろう。これは、ノード・ストリームと一気パイプを使用していませんが、それは作業を行います

var child = require('child_process'); 
var gulp = require('gulp'); 

gulp.task('launch-ls',function(done) { 
    child.spawn('ls', [ '-la'], { stdio: 'inherit' }); 
}); 

:として

一気

+3

子プロセスに関する研究をした後、私は最後に 'child_process.exec'を使って目標を達成しました。あなたのノードリソースをありがとう! – houhr

+26

実際に彼の質問に答える代わりに、プラグインへのリンクで応答してくれてありがとう。 –

+7

プラグインを使いたくないかもしれないが、私の答えは依然として質問に対処していると思う。 – Erik

0

最も簡単な解決のための便利なコマンドラインインタフェースは同じくらい簡単です。

関連する問題