在后台启动Redis服务器后,Gulp任务卡住了

时间:2014-09-16 02:16:45

标签: redis gulp

gulpfile.js  

var shell = require('gulp-shell');

gulp.task('startRedis', shell.task([  
  'redis-2.8.15/src/redis-server > /dev/null &'  
]));

当我运行上面的startRedis gulp任务时,它启动redis服务器但从不退出。

$gulp startRedis
[19:03:42] Using gulpfile ~/myhome/gulpfile.js  
[19:03:42] Starting 'startRedis'...  

如果我停止redis服务器,则返回。不确定有什么问题,请帮忙。

2 个答案:

答案 0 :(得分:1)

假设您只是希望立即完成任务,您可能会更好地直接使用child_process.exec

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

gulp.task('startRedis', function() {
  exec('redis-2.8.15/src/redis-server', function(err, stdout, stderr) {
    if (err) {
      console.log(err, stdout, stderr);
    }
  });
});

如果你想让gulp立即退出,从而创建一个僵尸redis-server进程,这可能会更复杂。

答案 1 :(得分:0)

我已经使用gulp-shell启动我的redis服务器,但每次在我的节点应用程序之前都没有启动

使用exec = require('child_process').exec;

我可以做得更安全

gulp.task('dev-redis', function() {
    exec('redis-server --port 7777 --notify-keyspace-events KExe', function (err, stdout, stderr) {
        console.log(stdout);
        console.log(stderr);
    });
});
gulp.task('dev',['dev-redis'], function() {

    /*
    * Add on('change').on('restart') allow to add listeners
    * Even if you don't precise callback functions, it triggers the change/restart event
    * */
    nodemon({ script: 'index.js', nodeArgs: ['--debug'], env: { 'NODE_ENV': 'development' }  })
        .on('change', [])
        .on('restart', function () {
            console.log('restarted!');
        });
});