Skip to content

Run multiple processes from a single terminal.

License

Notifications You must be signed in to change notification settings

smikhalevski/jointly

Repository files navigation

Jointly

Run multiple processes from a single terminal.

npm install jointly --save-dev

Create a configuration jointly.config.json (or jointly.config.js) with tasks that should be executed:

[
  {
    "command": "ping",
    "args": ["google.com"]
  },
  {
    "command": "ping",
    "args": ["amazon.com"]
  }
]

To start tasks run:

jointly

You can explicitly pass a configuration file path:

jointly another.config.json

Configuration

Each task supports following options:

command
The shell command to execute.
args
The array of CLI arguments to pass to the command.
id
The unique ID of the task.
dependencies
The array of task IDs that must be resolved before this task.
resolveStrategy = 'start'

Determines when the task is considered fulfilled and allows its dependants to start:

  • 'start' then dependants start immediately after this command is started.
  • 'exit' then dependents start only after the command exits.
  • The callback that receives a line that command printed to the stdout and returns true if dependent tasks should be started, or false otherwise.
rejectStrategy = 'auto'

Determines when the task is considered failed:

  • 'auto' then the task is failed if the command exit code isn't 0.
  • 'never' then the task is never failed.
  • The callback that returns true is the task must be considered failed for a particular exit code.
cwd
The current working directory of the child process.
env

The object with environment key-value pairs. By default, process.env is passed to a spawned task process.

argv0

Explicitly set the value of argv[0] sent to the child process. This will be set to command if not specified.

uid
Sets the user identity of the process.
gid
Sets the group identity of the process.
shell = false

If false, then no shell is available. If true, runs command inside of a shell. Uses '/bin/sh' on Unix, and process.env.ComSpec on Windows. A different shell can be specified as a string. See Shell requirements and Default Windows shell.

windowsVerbatimArguments = false

No quoting or escaping of arguments is done on Windows. Ignored on Unix. This is set to true automatically when shell is specified and is CMD.

killSignal = 'SIGINT'
The signal value to be used when the spawned process will be killed by the abort signal.
timeout
In milliseconds the maximum amount of time the process is allowed to run.