2015-12-05 11 views
5

Ho due script server (entrambi si affidano a socket.io; in esecuzione su porte diverse).Gulp: esegue più script di nodo in parallelo

Mi piacerebbe iniziare entrambi in parallelo via gulp. Ma in più mi piacerebbe avere la possibilità di fermare uno di loro. E forse persino accedere all'output della console di ogni script.

Esiste una soluzione esistente? O consiglieresti addirittura di usare qualcos'altro che gulp?

risposta

3

ho trovato una soluzione in cui ho inoltre avviare un server MongoDB:

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']); 
+0

Sono aperto a suggerimenti e disposto a dare il segno di spunta a soluzioni migliori. – tmuecksch

0

nodemon/foreverjs è una buona soluzione per i casi non complicati, ma non sono scalabili come pm2 è. Pertanto, se desideri una soluzione scalabile e affidabile, ti consigliamo di utilizzare pm2. Inoltre, vale la pena ricordare che il demone PM2 dopo l'avvio a differenza di foreverjs/nodemon. Potrebbe essere un bug o una funzionalità per te e in genere dipende dalle tue esigenze.

pm2 start script1.js 
pm2 start script2.js 
pm2 status // show status of running processes 
pm2 logs // tail -f logs from running processes 
Problemi correlati