node-entry
v1.1.0
Published
A tool to start multiple long-running shell processes
Downloads
9
Maintainers
Readme
Entry
Entry is a command-line tool that helps if you want to run multiple long-running processes in the same terminal session.
It takes an entry.json
file containing an array of commands and runs them as sequential and/or parallel processes. It means you don't have to remember to run multiple commands in many terminal sessions when starting you app.
Installation
$ npm install -g node-entry
Usage
$ entry
Configuration
Arguments
| Name | Details |
| ----------------------------------- | ------- |
| ‑‑env (optional) | The environment file to source, defaults to ./.env
. |
| ‑‑config (optional) | The config entry.json
file for your project. The default location is in the projects's root directory, but Entry will recursively search from the current working directory up a project tree for a file named entry.json
. |
An entry task
{
"handle": "myHandle",
"spawn": {
"command": "sleep",
"args": [ "2" ]
},
"waitOn": "anotherHandle",
"stdinPrefix": "slp"
}
handle
(string, required, must be unique): The identifier available forwaitOn
properties on other entries in the file.command
(string, required): The command you want Entry to run.args
(array, optional): Arguments passed to thecommand
.waitOn
(string, optional): Allows sequential execution.waitOn
takes ahandle
that is already defined within the file and waits for thathandle
's command to exit before running.stdinPrefix
(string, optional, must be unique): Gives the ability to pass information to a particular entry while Entry is running. For example, astdinPrefix
ofnd
fornodemon
can be used to callnd.rs
to restart node while entry is running.
Example entry.json files
Sequential
[
{
"handle": "bread",
"spawn": {
"command": "echo",
"args": [ "toasted", "with", "butter" ]
}
},
{
"handle": "eggs",
"spawn": {
"command": "echo",
"args": [ "scrambled" ]
},
"waitOn": "bread"
},
{
"handle": "coffee",
"spawn": {
"command": "echo",
"args": [ "with", "sugar", "and", "cream" ]
},
"waitOn": "eggs"
},
{
"handle": "breakfast",
"spawn": {
"command": "echo",
"args": [ "eat" ]
},
"waitOn": "eggs"
}
]
Parallel
[
{
"handle": "clean",
"spawn": {
"command": "echo",
"args": [ "sweep", "mop", "dust" ]
}
},
{
"handle": "dishes",
"spawn": {
"command": "echo",
"args": [ "load dishwasher", "run dishwasher" ]
}
},
{
"handle": "laundry",
"spawn": {
"command": "echo",
"args": [ "load washing machine", "run washing machine" ]
}
}
]
Real Example
This is an actual entryfile for one of our projects:
[
{
"handle": "couch",
"spawn": {
"command": "couchdb",
"args": []
}
},
{
"handle": "redis",
"spawn": {
"command": "redis-server",
"args": []
}
},
{
"handle": "gulp",
"spawn": {
"command": "./node_modules/gulp/bin/gulp.js",
"args": [ "clean-build" ]
}
},
{
"handle": "gulpWatch",
"spawn": {
"command": "gulp",
"args": [ "watch" ]
},
"waitOn": "gulp"
},
{
"handle": "nodemon",
"spawn": {
"command": "nodemon",
"args": [ "-w", "server", "-e", "html,json,js", "server/server.js" ]
},
"stdinPrefix": "nd",
"waitOn": "gulp"
},
{
"handle": "nodemon-worker",
"spawn": {
"command": "nodemon",
"args": [ "-w", "server", "worker/worker.js" ]
},
"stdinPrefix": "ndw"
}
]