#glue
Server composer for hapi.js.
Lead Maintainer - Chris Rempel
Glue exports a single function compose
accepting a JSON manifest
file specifying the Hapi server options, connections and plugins. Glue primarily works in synergy with Rejoice, but can be integrated directly into any Hapi application loader.
compose(manifest, [options], callback)
manifest
- an object having:- 'server' - an object containing the options passed to
new Server([options])
- 'connections' - an array of connection options, passed individually in calls to
server.connection([options])
- 'plugins' - an object or array of objects holding plugin entries to register with
server.register(plugins, [options], callback)
. Note that when using an object, the order of registration is not guaranteed, while with the array it is. Still when you want absolutely guarantee the order of plugin loading use the hapi built in way,server.dependency(dependencies, [after])
. Each key is thename
of the plugin to load and register and the value is one of:- an object to use as the plugin options which get passed to the plugin's registration function when called.
- an array of objects where each object will load a separate instance of the plugin. Multiple instances of a plugin is only possible if the plugin's
attributes.multiple
istrue
. Each object can have:- any option from
server.register
options options
- an object to use as the plugin options which get passed to the plugin's registration function when called.
- any option from
- 'server' - an object containing the options passed to
options
- an object having- 'relativeTo' - a file-system path string that is used to resolve loading modules with
require
. Used inserver.cache
andplugins[name]
- 'preConnections' - a callback function that is called prior to adding connections to the server. The function signature is
function (server, next)
where:server
- is the server object returned fromnew Server(options)
.next
- the callback function the method must call to return control over to glue
- 'prePlugins' - a callback function that is called prior to registering plugins with the server. The function signature is
function (server, next)
where:server
- is the server object with all connections selected.next
- the callback function the method must call to return control over to glue
- 'relativeTo' - a file-system path string that is used to resolve loading modules with
callback
- the callback function with signaturefunction (err, server)
where:err
- the error response if a failure occurred, otherwisenull
.server
- the server object. Callserver.start()
to actually start the server.
You create a manifest and then you can use the manifest for creating the new server:
var Glue = require('glue');
var manifest = {
server: {
debug: {
request: ['error']
}
},
connections: [{
port: 8080
}],
plugins: {
'./routes/index': {}
}
};
var options = {
relativeTo: __dirname
};
Glue.compose(manifest, options, function (err, server) {
if (err) {
throw err;
}
server.start(function () {
console.log('woot');
});
});