modula-loader

0.3.2 • Public • Published

modula-loader

npm package

A module loader for node.

Installation

npm install modula-loader

Usage

modula-loader takes a directory name. Only works up to one level deep.

import loader from 'modula-loader';
let modules = loader('tasks');

API

loader(dir)

Load modules inside the specified directory.

let moduls = loader(dir)

loader(dir[, config])

Additionally modula-loader supports options and arguments via configuration.

let moduls = loader(dir, {
  opts: {
    flat: true
  },
  args: {
    arg1: arg1,
    arg2: arg2
    ...
  }
})

opts

Available options include:

  • flat: attribute used to ignore subdir structure (default false).
  • include: specify the file(s) to load
  • exclude: specify the file(s) to not load

args

Any desired arguments to be passed to the modules.

Examples

Given the following directory structure:

tasks
├── build
│    ├── compile:js.js
│    └── compile:sass.js
└── deploy
      ├── minify:css.js
      └── minify:js.js

And the code bellow:

import loader from 'modula-loader';
let modules = loader('tasks');

It will return the following to modules:

{
  'compile:js': [Function],
  'compile:sass': [Function],
  build: {
    'compile:js': Function],
    'compile:sass': [Function]
  },
  'minify:css': [Function],
  'minify:js': [Function],
  deploy: {
    'minify:css': [Function],
    'minify:js': [Function]
  }
}

Example with arguments

args: Can be whatever you want to be made available to all of your modules. args are dynamically expanded.

See:

import loader from 'modula-loader';

let path = {
  styles:  {
    src: 'styles/',
    dest: 'www/styles/'
  },
  scripts: {
    src: 'scripts/',
    dest: 'www/scripts/'
  }
}

let plugins = {
  browserSync: browserSync
}

let modules = loader('tasks', {
  args: {
    gulp: gulp,
    path: path,
    $: plugins
  }
})

With this configuration, your modules will receive each arg as an argument:

// tasks/build/compile:sass.js <- A simple node module
import sass from 'gulp-sass';
import rename from 'gulp-rename';

module.exports = (gulp, path, $) => {
  return () => {
    gulp.src([`${path.styles.src}**/*.sass`])
    .pipe(sass())
    .pipe(gulp.dest(path.styles.dest))
    .pipe($.browserSync.stream());
  };
};

Example with options

Only load a specific set of files

import loader from 'modula-loader';

let modules = loader('tasks', {
  opts: {
    include: ['compile:js', 'compile:sass']
  }
})

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i modula-loader

Weekly Downloads

0

Version

0.3.2

License

MIT

Last publish

Collaborators

  • nefla