Your app powered by plugins 🚀💫 Universal Plugin Loader
Your app powered by plugins · Universal Plugin Loader
Plugins are great to build modular, extensible apps. Many frameworks have a use
or similar method to install plugins or middleware, but then the configuration is hardcoded, buried in code.
We can do better.
npm
or yarn
✓./plugins.json
{
"cors": {
"origin": "http://example.com",
"optionsSuccessStatus": 200
},
"express-session": {
"secret": "keyboard cat",
"resave": false,
"saveUninitialized": true,
"cookie": {
"secure": true
}
}
}
index.js
const loadPlugins = require('plugin-powered')
const plugins = require('./plugins.json')
const app = require('express')()
loadPlugins(app, plugins)
// done! 🚀💫
$ npm i plugin-powered
loadPlugins(target, plugins[, options])
or
loadPlugins(plugins, options)
object
| function
| Array
object
| function
| Array
optionally specifies where plugins should be installed.
use
optionalstring
default: ‘use’
Name of the use
method. target[use]
must be a function
errors
optionalnull
| object
| function
| Array
| Console
| logger
Writing a plugin is super simple. A plugin is just a regular module that exports a function which takes a single parameter, options
:
module.exports = function plugin(options) {
// do things
}
baseDir/
name
, baseDir/prefix-
name
, name
, prefix-
name
require
.function
is called. options
is passed as argument unless options
is true
, in which case no options are passed.function
, then it is added to its host by calling the use
function, i.e. use(pluginReturnValue)
.options
Value | Description |
---|---|
false |
Disabled. A plugin that’s set to false will not be loaded and its function will not be called. |
true |
Defaults. If your plugin accepts options, then the value true should mean ‘use meaningful defaults’. Note: The plugin will be called without any arguments. |
other | Plugin Specific. Plugin authors are free to define whatever options their plugin expects. |