2015-04-08 294 views
28

我想從gulp運行shell命令,使用gulp-shell。我看到以下習語被使用了大文件。從gulp運行shell命令

這是從一個吞嚥任務運行命令的慣用方式?

var cmd = 'ls'; 
gulp.src('', {read: false}) 
    .pipe(shell(cmd, {quiet: true})) 
    .on('error', function (err) { 
     gutil.log(err); 
}); 

回答

76

gulp-shell已被列入黑名單。您應該使用gulp-exec,這也有更好的文檔。

對於你的情況,它實際上指出:

注意:如果你只是想運行一個命令,只需運行命令,不要使用這個插件:

var exec = require('child_process').exec; 

gulp.task('task', function (cb) { 
    exec('ping localhost', function (err, stdout, stderr) { 
    console.log(stdout); 
    console.log(stderr); 
    cb(err); 
    }); 
}) 
+2

如何執行兩個shell命令? –

+20

'gulp-shell已被列入黑名單':你是什麼意思? – Laoujin

+22

Gulp提供了一個黑名單,它不是用「Gulp方式」編寫的。看看這裏的列表:https://github.com/gulpjs/plugins/blob/master/src/blackList.json – ddprrt

28

的新的方式來做到這一點,保持控制檯輸出相同(例如,用顏色):

請參閱:https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

var gulp = require('gulp'); 
 
var spawn = require('child_process').spawn; 
 

 
gulp.task('my-task', function (cb) { 
 
    var cmd = spawn('cmd', ['arg1', 'agr2'], {stdio: 'inherit'}); 
 
    cmd.on('close', function (code) { 
 
    console.log('my-task exited with code ' + code); 
 
    cb(code); 
 
    }); 
 
});

+2

但如果你是在Windows上,爲產卵()不正常,請參閱[這個節點問題(HTTPS小心://GITH ub.com/nodejs/node-v0.x-archive/issues/2318) –

+0

這是最好的答案海事組織+1 – chukkwagon