1.1.0 • Published 9 years ago
node-entry v1.1.0
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-entryUsage
$ entryConfiguration
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 forwaitOnproperties 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.waitOntakes ahandlethat 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, astdinPrefixofndfornodemoncan be used to callnd.rsto 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"
}
]