noder-restart v1.1.3
noder: node + restart
Simple node script that allows you to run scripts which are able to self-restart, self-terminate and run forever.
How does it work?
noder listens to special directives on stdout stream. When the script wants to
be restarted, it simply console.log a directive like [noder:restart]. Then
noder catches it and restarts the script. So simple, isn't it?
Installation
# GLOBAL
$ npm i -g noder-restart # using npm...
$ yarn global add noder-restart # ...or yarn
# LOCAL
$ npm i -D noder-restart
$ yarn add -D noder-restartUsage
Save this script as script.js:
console.log('Hello World!');
setTimeout(() => {
  console.log('Restarting...');
  console.log('[noder:restart]'); // [noder:restart] will be caught by noder and will cause the script to restart
  // You can write everything in one line as well:
  // console.log('Restarting... [noder:restart]');
}, 1000);Then run it using noder:
$ noder script.jsOr, if you installed noder locally:
$ npx noder script.js
$ yarn noder script.jsThe script will be restarted every second.
console.log('[noder:restart]'); - restarts scriptconsole.log('[noder:terminate]'); - terminates script
Safe console
You can enable safe console mode in the script run by noder. This mode prevents
terminate/restart by accident by removing the directives from the stream while
using console.log.
Here's how to enable safe console:
const { enableSafeConsole } = require('noder-restart');
// Enable safe console mode
// Note: if you configure noder to use custom terminate/restart directive
// you will need to change the directives below. Otherwise leave everything as is.
const terminator = enableSafeConsole({
  restart: '[noder:restart]',
  terminate: '[noder:terminate]'
});
// Now if you type:
console.log('[noder:restart]');
console.log('[noder:terminate]');
// nothing happens!
// Use terminator object to restart script
terminator.restart();
// In case you want to terminate your script, write:
// terminator.terminate();Note: You should install noder as a normal (not dev) dependency if you want to
use safe console (don't add -D flag to the npm i/yarn add command).
CLI
Usage: noder [options] <script> [script args]
Options:
-h,--help- Displays noder's help-v,--version- Displays noder's version-f,--forever- Enables forever mode (it means the script will restart after crash/exit; you can quit it by terminating)-w,--watch- Defines glob patterns for watch mode-N,--no-node- Disables node script execution mode (you can execute every script/program)-c,--config- Loads custom config file (the default one is/current/working/dir/noder.jsonif exists)--restart- Defines custom restart directive--terminate- Defines custom terminate directive
Config
By default noder searches for the config file named noder.json placed in the
current working directory (you can change it using -c/--config option).
Content:
{
  "file": "script.js",
  "args": ["arg1", "arg2"],
  "forever": false,
  "watch": ["*.js", "*.ts"],
  "noNode": false,
  "directives": {
    "restart": "[noder:restart]",
    "terminate": "[noder:terminate]"
  }
}file- node script to execute (or the program name/path ifnoNodeistrue)args- CLI arguments for script/programforever- forever mode (auto-restart after exit/crash)watch- array with glob patterns for watch modenoNode- disable node (runs every program; the path to program must be provided infile)directives- list of directivesrestart- restart directiveterminate- terminate directive
