Killing a node process using a package.json stop script
<p>I am trying to write a stop command for my nodeJS application which greps for a node process and kills it, so far I have:</p>

<pre><code>{
  ...
  "scripts": {
    "start": "node src/main/webapp/index.js",
    "stop": "kill \"$(ps ux | grep node | grep -Eo '^\\s+[0-9]+' | tr -d '[[:space:]]')\""
  }
  ...
}
</code></pre>

<p>If I run <code>ps ux</code> I get</p>

<pre><code>  PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
12228    8428   12228      12960  cons0     197608 22:02:12 /usr/bin/ps
 4840       1    4840       4840  cons0     197608 22:01:46 /usr/bin/bash
13484   12292   12292       8024  cons0     197608 22:02:07 /c/Program Files/nodejs/node
</code></pre>

<p>If I run <code>echo "$(ps ux | grep node | grep -Eo '^\s+[0-9]+' | tr -d '[[:space:]]')"</code> then I get output <code>13484</code> so I know that bit works. However when I run <code>npm stop</code> I get the error:</p>

<pre><code>npm ERR! Windows_NT 6.3.9600
npm ERR! argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "stop"
npm ERR! node v0.12.4
npm ERR! npm  v2.10.1
npm ERR! code ELIFECYCLE
npm ERR! app@1.0.0 stop: `kill "$(ps ux | grep node | grep -Eo '^\s+[0-9]+' | tr -d '[[:space:]]')"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the app@1.0.0 stop script 'kill "$(ps ux | grep node | grep -Eo '^\s+[0-9]+' | tr -d '[[:space:]]')"'.
npm ERR! This is most likely a problem with the app package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     kill "$(ps ux | grep node | grep -Eo '^\s+[0-9]+' | tr -d '[[:space:]]')"
npm ERR! You can get their info via:
npm ERR!     npm owner ls app
npm ERR! There is likely additional logging output above.
</code></pre>

<p>Why is this breaking? Is there an easier way to do this?</p>