hapi-routes-loader

0.3.0 • Public • Published

Build Status NPM Downloads codecov

hapi-routes-loader

Coverage 100% A custom route loader for hapijs.

This module aims you write routes into separate files and load those without to require each file. Also, this module add a prefix with the file name in each declared path.

Compatibility

hapi-routes-loader version hapi.js node version
v0.3.0 >=18 @hapi/hapi >=11
v0.2.0 =13 hapi >=0.10

Installation

$ [sudo] npm install hapi-routes-loader --save

Usage

Following example attaches hapi-routes-loader to a simple node.js app (you can see test for more examples)

Directory structure:

├── example/
│   ├── public /
│   │   ├── assets/
│   │   │   │   ├── cs/
│   │   │   │   ├── js/
│   │   │   │   ├── img/
│   ├── app /
│   │   ├── routes/
│   │   │   ├── admin.js/
│   │   │   ├── user.js/
│   │   │   ├── account.js/
│   │   │   ├── assets.js/
│   │   ├── controllers/
│   │   ├── models/
│   │   ├── helpers/
.   .   .  . . . .
.   .   .  . . . .
.   .   .  . . . .
│   ├── server.js

app/routes/user.js

'use strict';
 
module.exports = [{
    method: 'GET',
    path: 'index',
    config: {
        auth: false
    },
    handler: function (request, reply) {
 
        reply('get user/index');
    }
}, {
    method: 'GET',
    path: 'dashboard',
    config: {
        auth: false
    },
    handler: function (request, reply) {
 
        reply('get user/dashboard');
    }
}];
 

app/routes/admin.js //You can see more examples into test/routes folder

'use strict';
 
module.exports = [{
    method: 'GET',
    path: 'index',
    config: {
        auth: false
    },
    handler: function (request, reply) {
 
        reply('get admin/index');
    }
}, {
    method: 'GET',
    path: 'dashboard',
    config: {
        auth: false
    },
    handler: function (request, reply) {
 
        reply('get admin/dashboard');
    }
}];
 

app/routes/account.js //You can see more examples into test/routes folder

'use strict';
 
module.exports = [{
    method: 'GET',
    path: 'index',
    config: {
        auth: false
    },
    handler: function (request, reply) {
 
        reply('get account/index');
    }
}, {
    method: 'GET',
    path: 'dashboard',
    config: {
        auth: false
    },
    handler: function (request, reply) {
 
        reply('get account/dashboard');
    }
}];
 

server.js

'use strict';
 
const Hapi = require('hapi');
const Inert = require('inert');
const HapiRoutesLoader = require('hapi-routes-loader');
 
const init = async () => {
 
    const server = Hapi.server({
        port: 3000,
        host: 'localhost'
    });
 
    //register HapiRoutesLoader as a hapi's plugin
    await server.register([Inert,
        {
            plugin: HapiRoutesLoader,
            options: {
                dirname: __dirname,
                pathRoutes: '/routes'
            }
        }
    ]);
    await server.start();
    console.log('Server running on %s', server.info.uri);
};
 
process.on('unhandledRejection', (err) => {
 
    console.log(err);
    process.exit(1);
});
 
init();

execute

node index.js

Open your browser and visit http://localhost:8000 and test your aplication with every registered routes in each file. For example:

http://localhost:8000/account/index http://localhost:8000/account/dashboard

http://localhost:8000/admin/index http://localhost:8000/admin/dashboard

http://localhost:8000/user/index http://localhost:8000/user/dashboard

Testing

npm run test

Support

If you need help using hapi-routes-loader, or have found a bug, please create an issue on the GitHub repo.

License

MIT Licence

Package Sidebar

Install

npm i hapi-routes-loader

Weekly Downloads

9

Version

0.3.0

License

MIT

Unpacked Size

15.6 kB

Total Files

12

Last publish

Collaborators

  • davidenq