Giter Club home page Giter Club logo

rejoice's Introduction

rejoice

hapi.js CLI.

Build Status

Lead Maintainer - Lloyd Benson

Rejoice is a CLI tool for hapi which requires a js/json file with the config. It relies on the composer library called glue (http://github.com/hapijs/glue).

To start it up simply:

rejoice -c app.json

// or using regular JS file
// where app.js must export the config object
rejoice -c app.js

where app.json may look something like:

{
    "connections": [
        {
            "port": 8080,
            "routes": {
                "timeout": {
                    "server": 10000
                }
            },
            "load": {
                "maxHeapUsedBytes": 1073741824,
                "maxRssBytes": 2147483648,
                "maxEventLoopDelay": 5000
            },
            "labels": [
                "api",
                "http"
            ]
        },
        {
            "port": 8999,
            "labels": [
                "admin"
            ]
        }
    ],
    "server": {
        "load": {
            "sampleInterval": 1000
        }
    },
    "registrations": [
        {
            "plugin": {
                "register": "good",
                "options": {
                    "ops": {
                      "interval": 5000
                    },
                    "reporters": {
                        "myConsoleReporter": [{
                            "module": "good-squeeze",
                            "name": "Squeeze",
                            "args": [{ "log": "*", "response": "*" }]
                        }, {
                            "module": "good-console"
                        }, "stdout"],
                        "myFileReporter": [{
                            "module": "good-squeeze",
                            "name": "Squeeze",
                            "args": [{ "ops": "*" }]
                        }, {
                            "module": "good-squeeze",
                            "name": "SafeJson"
                        }, {
                            "module": "good-file",
                            "args": ["./test/fixtures/awesome_log"]
                        }]
                    }
                }
            }
        },
        {
            "plugin": "lout"
        }
    ]
}

You can specify a specific path to be passed to Glue as the relativeTo option by using the -p flag.

rejoice -c app.json -p /full/path/to/project/plugin/dir

This will allow your plugins to use relative paths in the config file. See the example below.

{
    "connections": [
        {
            "port": 8080,
            "labels": [
                "api",
                "http"
            ]
        }
    ],
    "registrations": [
        {
            "plugin": "lout"
        },
        {
            "plugin": "./myplugin"
        }
    ]
}

When using regular JS file, you may add preConnections or preRegister callbacks. See the example below.

module.exports = {
  connections: [ '...' ],
  registrations: [ '...' ],
  preConnections: function(server, next) {
    // your preConnections logic goes here
    next();
  },
  preRegister: function(server, next) {
    // your preRegister logic goes here
    next();
  }
};

For more information about these options, see Glue's API.

If you need a module required before your application is loaded you can use the -r flag.

rejoice -c app.json -r `module`

Multiple modules can be required by using the -r flag as many times as needed. This example requires two modules from an implied source of node_modules.

rejoice -c app.json -r babel/register -r dotenv/config

When using -r with the -p flag, the -p flag takes on an additional meaning. In this case, the -p specifies the path where the module specified in -r will be found.

rejoice -c app.json -r `module` -p /base/path/to/required/module

The resulting search path for module would be /base/path/to/required/module/node_modules.

To specify both a -p option to be passed to Glue and specify a path to locate the -r module use an absolute path for -r.

rejoice -c app.json -p ./lib -r /absolute/path/to/module

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.