ChrisWren / grunt-nodemon

Grunt task to run nodemon
MIT License
345 stars 37 forks source link

Adding nodemon to Gruntfile disables other tasks' ability to catch signals #59

Open thetaiter opened 9 years ago

thetaiter commented 9 years ago

I am setting up a nodejs server using grunt as the task runner, so I have many grunt tasks that do various things. Many of them handle signals like SIGINT, SIGQUIT, and SIGTERM. Until I add the line grunt.loadNpmTasks('grunt-nodemon'); to my Gruntfile, all of these signal handlers worked fine. As soon as I add that line, other grunt tasks, unrelated to nodemon, no longer handle signals properly.

For reproducing the issue, make sure the line I indicated above is commented out in your Gruntfile. You do not need to remove the initConfig info, or uninstall grunt-nodemon from node_modules. Then create a simple grunt task that handles SIGINT like so:

var done = this.async();

process.on('SIGINT', function() {
    console.log('Caught SIGINT');
    done();
});

Run that task, then press Ctrl-C to send the SIGINT signal to the process, and you should see that the task exits properly, displaying the desired text before exiting.

Now if you uncomment grunt.loadNpmTasks('grunt-nodemon'); in the Gruntfile and try to run the example task again, you will see that it no longer handles the signal properly.

Why would having grunt-nodemon affect other unrelated grunt tasks?

oshybystyi commented 9 years ago

I think that is 'by design' (hard to explain though). A workaround for this is to use grunt-concurrent, e.g. you can see an example of usage here. Haven't tried it - so it might not be applicable for your case.