/hapi-router

auto route loading for hapi

Primary LanguageJavaScriptMIT LicenseMIT

hapi-router

Build Status Code Climate Test Coverage Version Downloads

Route loader for hapi.

Hapi v17

hapi-router requires Hapi v17. If you're using a previous version of Hapi, use hapi-router@3.5.0

Install

// If you're using Hapi v17
$ npm i -S hapi-router

// If you're using < Hapi v17
$ npm i -S hapi-router@3.5.0

Usage

try {
  await server.register({
    plugin: require('hapi-router'),
    options: {
      routes: 'src/**/*Route.js' // uses glob to include files
    }
  })
} catch (err) {
  // Handle err
  throw err
}

Options

routes

Required
Type: string / array

The glob pattern you would like to include

ignore

Type: string / array

The pattern or an array of patterns to exclude

cwd

Type: string

The current working directory in which to search (defaults to process.cwd())

Specifying Routes

Any files that match your routes glob will be loaded

Example route file:

module.exports = [
  {
    path: '/test1',
    method: 'GET',
    handler: function (request, reply) {
      reply('hello');
    }
  },
  {
    path: '/test2',
    method: 'GET',
    handler: function (request, reply) {
      reply('hello');
    }
  }
]

Glob Primer

Example globs:

'routes/*.js'    // match all js files in the routes directory
'routes/**/*.js' // recursively match all js files in the routes directory
'**/*Route.js'   // match all js files that end with 'Route'

From isaacs:

"Globs" are the patterns you type when you do stuff like ls *.js on the command line, or put build/* in a .gitignore file.

The following characters have special magic meaning when used in a path portion:

  • * Matches 0 or more characters in a single path portion
  • ? Matches 1 character
  • [...] Matches a range of characters, similar to a RegExp range. If the first character of the range is ! or ^ then it matches any character not in the range.
  • !(pattern|pattern|pattern) Matches anything that does not match any of the patterns provided.
  • ?(pattern|pattern|pattern) Matches zero or one occurrence of the patterns provided.
  • +(pattern|pattern|pattern) Matches one or more occurrences of the patterns provided.
  • *(a|b|c) Matches zero or more occurrences of the patterns provided
  • @(pattern|pat*|pat?erN) Matches exactly one of the patterns provided
  • ** If a "globstar" is alone in a path portion, then it matches zero or more directories and subdirectories searching for matches. It does not crawl symlinked directories.