API documentation generator for hapi
Lead Maintainer: Nicolas Morel
lout is a documentation generator for hapi servers, providing a human-readable guide for every endpoint using the route configuration. The module allows full customization of the output.
You can find a live demo of lout using the unit tests routes. The routes are of course fake but you can get a grasp of what lout looks like given various inputs.
var Hapi = require('hapi');
var server = new Hapi.Server();
server.connection({ port: 80 });
server.register({ register: require('lout') }, function(err) {
});
server.start();
var Hapi = require('hapi');
var server = new Hapi.Server(80);
server.pack.register({ plugin: require('lout') }, function() {
server.start();
});
var Hapi = require('hapi');
var server = new Hapi.Server(80);
server.route([{
your routes...
}]);
server.pack.require('lout', function() {
server.start();
});
The following options are available when registering the plugin:
- 'engines' - an object where each key is a file extension (e.g. 'html', 'jade'), mapped to the npm module name (string) used for rendering the templates. Default is { html: 'handlebars' }.
- 'endpoint' - the path where the route will be registered. Default is /docs.
- 'basePath' - the absolute path to the templates folder. Default is the lout templates folder.
- 'cssPath' - the absolute path to the css folder. Default is the lout css folder. It must contain a style.css.
- 'helpersPath' - the absolute path to the helpers folder. Default is the lout helpers folder. This might need to be null if you change the basePath.
- 'partialsPath' - the absolute path to the partials folder. Default is the lout templates folder. This might need to be null if you change the basePath.
- 'auth' - the route configuration for authentication. Default is to disable auth.
- 'indexTemplate' - the name of the template file to contain docs main page. Default is 'index'.
- 'routeTemplate' - the name of the route template file. Default is 'route'.
- 'filterRoutes' - a function that receives a route object containing
method
andpath
and returns a boolean value to exclude routes.
If you want a specific route not to appear in lout's documentation, you have to set lout settings for this specific route to false.
Here is an example snippet of a route configuration :
{
method: 'GET',
path: '/myroute',
config: {
handler: [...],
[...]
plugins: {
lout: false
}
}
}
If you want to exclude multiple routes using conditions, you can use filterRoutes
when registering lout :
server.pack.register({
plugin: require('lout'),
options: {
filterRoutes: function (route) {
return route.method !== '*' && !/^\/private\//.test(route.path);
}
}
}, function() {
server.start();
});