Run a command as a child process and exit process upon EOF (^D)
npm install exit_on_eofexit_on_eofHelper script for Elixir/Phoenix projects using npm scripts as a watcher instead of Brunch
npm install -g exit_on_eof
Elixir/Phoenix projects use Brunch by default for front-end workflows, but this can be modified to use
a simpler approach like npm scripts as described here. A problem arises though
when killing/exiting the server. Phoenix sends an EOF signal through stdin to the watch process
to indicate it should terminate. npm scripts, like many commands, does not respond to EOF like SIGINT
so the node processes remain running.
This script helps deal with this issue by wrapping a user-given command in a parent process that is sensitive
to both SIGINT and EOF.
To read more about this sensitivity to EOF as per Chris McCord, view this
(Both Webpack and Brunch were actively PR'd to allow for this behavior. This is a stop-gap until a more elegant solution presents.)
###Usage
In Phoenix project update config/dev.exs:
```
config :{YOUR_PROJECT_NAME_ATOM}, {YOUR_PROJECT_NAME}.Endpoint
...
watchers: [exit_on_eof: ["npm run watch"]]package.json
In your :```
{
...
"scripts": {
...
"watch": some set of commands
...
},
...
}
When you start the server your command should run and when you stop the server
the node processes that were spun up to manage the front-end build will also
be killed.