2015-12-05 16 views
5

Tôi có hai tập lệnh máy chủ (cả hai đều dựa vào socket.io; chạy trên các cổng khác nhau).Gulp: Chạy nhiều tập lệnh nút song song

Tôi muốn bắt đầu cả hai song song qua gulp. Nhưng ngoài ra tôi muốn có khả năng ngăn chặn một trong số họ. Và thậm chí có thể truy cập vào đầu ra bàn điều khiển của mỗi tập lệnh.

Có giải pháp hiện tại nào cho điều này không? Hoặc bạn thậm chí sẽ khuyên bạn nên sử dụng bất cứ điều gì khác hơn là gulp?

Trả lời

3

Tôi tìm thấy một giải pháp trong đó tôi bổ sung bắt đầu một máy chủ 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

Tôi đang mở cho các đề xuất và sẵn sàng cung cấp dấu kiểm cho các giải pháp tốt hơn. – tmuecksch

0

nodemon/foreverjs là một giải pháp tốt đối với trường hợp không phức tạp, nhưng họ không phải là khả năng mở rộng như pm2 là. Vì vậy, nếu bạn muốn có giải pháp có thể mở rộng và đáng tin cậy, tôi khuyên bạn nên sử dụng pm2. Ngoài ra, điều đáng nói đến là pm2 daemonizes sau khi bắt đầu không giống như foreverjs/nodemon. Nó có thể là một lỗi hoặc một tính năng cho bạn và thường phụ thuộc vào nhu cầu của bạn.

pm2 start script1.js 
pm2 start script2.js 
pm2 status // show status of running processes 
pm2 logs // tail -f logs from running processes 
Các vấn đề liên quan