fastify-plugin-loader

A plugin to register an ordered list of plugins (e.g. from a JSON file)

Usage no npm install needed!

<script type="module">
  import fastifyPluginLoader from 'https://cdn.skypack.dev/fastify-plugin-loader';
</script>

README

fastify-plugin-loader

A plugin to register an ordered list of plugins (e.g. from a JSON file)

Node.js CI

Why?

The official fastify.-autoload plugin allows devs to load all plugins stored in a specific folder.

The main issue with this approach is that it's nearly impossible to:

  • define a specific loading order
  • passing configuration options to loaded plugins

Install

$ npm i --save fastify-plugin-loader

Usage

fastify.register(require('fastify-plugin-loader'), {
  basepath: __dirname,
  plugins: [
    'fastify-cors',
    'fastify-sensible',
    ...
    './plugins/example-plugin',
    ['./plugins/another-plugin', {
      option1: 'value',
      ...
    }]
  ]
)

You can also load them from an external JSON (or JS) file:

fastify.register(require('fastify-plugin-loader'), {
  basepath: __dirname,
  plugins: require('./plugins.json')
)

Options

When registering the plugin in your app, you can pass the following options:

Name Description
basepath The reference root path to consider when resolving . or ..
plugins The ordered list of plugin filenames to load (or [filename, opts] tuples).

NOTE: additional options are forwarded to all loaded plugins (and merged with plugin's local options, if provided).

Test

$ npm test

Acknowledgements

This project is kindly sponsored by:

heply

License

Licensed under MIT