Skip to content

Instantly share code, notes, and snippets.

@luwes
Created January 13, 2018 22:01
Show Gist options
  • Save luwes/0c6205b09ea7ac5dd1c2ff78fcd26c8c to your computer and use it in GitHub Desktop.
Save luwes/0c6205b09ea7ac5dd1c2ff78fcd26c8c to your computer and use it in GitHub Desktop.

Revisions

  1. wesley luyten created this gist Jan 13, 2018.
    31 changes: 31 additions & 0 deletions rollup-plugin-load-plugins.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,31 @@
    /* eslint-env node */
    const fs = require('fs');
    const path = require('path');
    const camelCase = require('lodash/camelcase');
    const pkg = require(path.resolve('package.json'));

    const defaultOptions = {
    regex: /^rollup-plugin-/,
    path: './'
    };

    module.exports = (options = defaultOptions) => {

    const local = fs.readdirSync(path.resolve(__dirname, options.path))
    .filter((name) => /\.js$/.test(name))
    .reduce((acc, curr) => {
    const key = curr.replace('.js', '');
    acc[camelCase(key)] = require(path.resolve(__dirname, curr));
    return acc;
    }, {});

    const npm = Object.keys(pkg.devDependencies)
    .filter((name) => options.regex.test(name))
    .reduce((acc, curr) => {
    const key = curr.replace(options.regex, '');
    acc[camelCase(key)] = require(curr);
    return acc;
    }, {});

    return Object.assign(npm, local);
    }