Skip to content
This repository has been archived by the owner. It is now read-only.
API documentation generator
JavaScript HTML CSS
Branch: master
Clone or download
Latest commit e731e01 Apr 24, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bin Update deps. Closes #184 Apr 22, 2019
lib Fix hapi legacy Apr 24, 2019
public/css fix docs Dec 21, 2017
templates Update deps. Closes #184 Apr 22, 2019
test Update deps. Closes #184 Apr 22, 2019
.editorconfig Restyle the whole interface Jan 13, 2014
.gitignore Update deps. Closes #184 Apr 22, 2019
.jsbeautifyrc Fix #81: Add support for object.pattern Sep 20, 2014
.jshintrc Upgrade lab and reach 100% coverage Apr 5, 2014
.npmignore Restore files Apr 24, 2019
.travis.yml Update deps. Closes #184 Apr 22, 2019
CHANGELOG.md Add changelog.md Dec 5, 2018
LICENSE.md Update deps. Closes #184 Apr 22, 2019
Procfile Try to fix heroku Oct 2, 2015
README.md Remove image Apr 22, 2019
package.json 11.2.3 Apr 24, 2019

README.md

lout

API documentation generator for hapi

Build Status

Description

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.

Live demo

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.

Usage

Lout depends on vision and inert, make sure you register them with hapi.

const Hapi = require('hapi');

const server = Hapi.server({ port: 80 });

await server.register([require('vision'), require('inert'), require('lout')]);

server.start().then(
  console.log('Server running at:', server.info.uri)
);

Parameters

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.
  • '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 and path and returns a boolean value to exclude routes.
  • 'apiVersion' - an optional string representing the api version that would be displayed in the documentation.

Ignoring a route in documentation

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',
  options: {
    handler: [...],
    [...]
    plugins: {
      lout: false
    }
  }
}

If you want to exclude multiple routes using conditions, you can use filterRoutes when registering lout :

server.register([require('vision'), require('inert'), {
  plugin: require('lout'),
  options: {
    filterRoutes: (route) => {
      return route.method !== '*' && !/^\/private\//.test(route.path);
    }
  }
}]).then(() => {
    server.start(() => {
        console.log('Server running at:', server.info.uri);
    });
});
You can’t perform that action at this time.