wurst v5.0.4

Directory based autoloader for hapi.js routes
Introduction
wurst is a directory based autoloader for hapi.js routes. Just set up your desired directory structure, export your route files, register the plugin and get your final prefixed routes based on the provided directory structure. For example it is perfect for manage the various versions of your API. wurst is the German translation for sausage - just throw anything in a pot and in the end you'll be satisfied ;-)
The modules standard and tape are used to grant a high quality implementation.
Compatibility
| Major Release | hapi.js version | node version |
|---|---|---|
v5 | >=18.4 @hapi/hapi | >=12 |
v4.1 | >=18.3.1 @hapi/hapi | >=8 |
v4 | >=18 hapi | >=8 |
v3 | >=17 hapi | >=8 |
v2 | >=13 hapi | >=6 |
Installation
For installation use the Node Package Manager:
$ npm install --save wurstor clone the repository:
$ git clone https://github.com/felixheck/wurstUsage
Import
First you have to import the module:
const wurst = require('wurst');Create hapi server
Afterwards create your hapi server and the corresponding connection if not already done:
const hapi = require('@hapi/hapi');
const server = hapi.server({
port: 8888,
host: 'localhost',
});Registration
Finally register the plugin and set the correct options:
(async () => {
await server.register({
plugin: wurst,
options: {
ignore: 'foo/**/*.js',
cwd: path.join(__dirname, 'routes'),
log: true
},
})
})();Options
routes:
stringOptional. Default:**/*.jsThe glob pattern to select route files.ignore:
string | Array.<?string>Optional. The glob pattern or an array of patterns to exclude route files.cwd:
stringOptional. Default:process.cwd()The absolute path to the current working directory in which to search. Subdirectories will be prefixes.log:
booleanOptional. Default:falseIftrue, the plugin logs the prefixed routes into console. For example:
Wurst prefixed the following routes
[GET] /foo/bar/foobar
[POST] /foo/fooExample
The following file structure is the base of this example:
src/
..routes/
....routes.js
....bar/
......routes.js
......foo/
........routes.js
..index.jsThe route files **/routes.js have to provide a single route object or a list of route objects via module.exports and could look like:
const routes = [
{
method: 'GET',
path: '/',
handler() {
return 'foo';
}
},
{
method: 'GET',
path: '/42',
handler() {
return '42';
}
}
];
module.exports = routes;After starting the server the following routes are available. Trailing slashes - excepted at / - will be removed automatically.
[GET] /
[GET] /42
[GET] /bar
[GET] /bar/42
[GET] /bar/foo
[GET] /bar/foo/42Testing
First you have to install all dependencies:
$ npm installTo execute all unit tests once, use:
$ npm testor to run tests based on file watcher, use:
$ npm startTo get information about the test coverage, use:
$ npm run coverageContribution
Fork this repository and push in your ideas.
Do not forget to add corresponding tests to keep up 100% test coverage.
4 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
11 years ago