Loads in any koa middlewares and attaches them to the global scope, or an object of your choice.
Inspired by gulp-load-plugins & load-grunt-tasks
$ npm install --save koa-load-middlewares
Given a package.json
file that has some dependencies within:
{
"dependencies": {
"koa-swig": "*",
"koa-bodyparser": "*"
}
}
Adding this into your koa server file:
var koa = require('koa');
var koaLoadMiddlewares = require('koa-load-middlewares');
var middlewares = koaLoadMiddlewares();
Or, even shorter:
var middlewares = require('koa-load-middlewares')();
Will result in the following happening (roughly, plugins are lazy loaded but in practice you won't notice any difference):
middlewares.swig = require('koa-swig');
middlewares.bodyparser = require('koa-bodyparser');
You can then use the plugins just like you would if you'd manually required them, but referring to them as middlewares.name()
, rather than just name()
.
This frees you up from having to manually require each koa middleware.
You can pass in an object of options that are shown below: (the values for the keys are the defaults):
koaLoadMiddlewares({
pattern: ['koa-*', 'koa.*'], // the glob(s) to search for
config: 'package.json', // where to find the plugins, by default searched up from process.cwd()
scope: ['dependencies', 'devDependencies', 'peerDependencies'], // which keys in the config to look within
replaceString: /^koa(-|\.)/, // what to remove from the name of the module when adding it to the context
camelize: true, // if true, transforms hyphenated plugins names to camel case
lazy: true, // whether the plugins should be lazy loaded on demand
rename: {} // a mapping of plugins to rename
});