Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gulp: Run multiple node scripts in parallel

Tags:

node.js

gulp

I've got two server scripts (both are relying on socket.io; running on different ports).

I'd like to start both in parallel via gulp. But in addition I'd like to have a possibility to stop one of them. And maybe even access the console output of each script.

Is there any existing solution for this? Or would you even recommend using anything else than gulp?

like image 503
tmuecksch Avatar asked Sep 26 '22 00:09

tmuecksch


1 Answers

I found a solution in which I additionally start a mongoDB server:

var child_process = require('child_process');
var nodemon = require('gulp-nodemon');

var processes = {server1: null, server2: null, mongo: null};

gulp.task('start:server', function (cb) {
    // The magic happens here ...
    processes.server1 = nodemon({
        script: "server1.js",
        ext: "js"
    });

    // ... and here
    processes.server2 = nodemon({
        script: "server2.js",
        ext: "js"
    });

    cb(); // For parallel execution accept a callback.
          // For further info see "Async task support" section here:
          // https://github.com/gulpjs/gulp/blob/master/docs/API.md
});

gulp.task('start:mongo', function (cb) {
    processes.mongo = child_process.exec('mongod', function (err, stdout, stderr) {});

    cb();
});

process.on('exit', function () {
    // In case the gulp process is closed (e.g. by pressing [CTRL + C]) stop both processes
    processes.server1.kill();
    processes.server2.kill();
    processes.mongo.kill();
});

gulp.task('run', ['start:mongo', 'start:server']);
gulp.task('default', ['run']);
like image 66
tmuecksch Avatar answered Dec 12 '22 03:12

tmuecksch