Home

Awesome

loader-cache NPM version Build Status

Register loader functions that dynamically read, parse or otherwise transform file contents when the name of the loader matches a file extension. You can also compose loaders from other loaders.

Example usage

var LoaderCache = require('loader-cache');
var loaders = new LoaderCache();

// register a loader for reading files
loaders.register('read', function(fp) {
  return fs.readFileSync(fp, 'utf8');
});

// register a loader for parsing YAML
loaders.register('yaml', function(fp) {
  return YAML.safeLoad(fp);
});

// create a loader from any combination of other
// registered loaders and functions.
loaders.register('dataLoader', ['read', 'yaml'], function(data) {
  if (!data) throw new Error('no data!');
  return data;
});

// pass a loader stack or the name of a loader to `.compose()` 
// to create the actual function to be used for loading
var fn = loaders.compose('dataLoader');
var data = fn('config.yml');

Install

Install with npm

$ npm i loader-cache --save

API

LoaderCache

Create a new instance of LoaderCache

Example

var LoaderCache = require('loader-cache');
var loaders = new LoaderCache();

.iterator

Register an iterator function of the given type. Types typically represent a kind of flow-control, like sync, promise, stream, async etc.

Params

Example

loader.iterator('sync', function(stack) {
  // `stack` is the loader stack (array) to iterate over
  // each item in array is a loader function
  return function(args) {
    // `args` is the arguments passed to the loaders
  }
});

.loader

Register a loader. The first argument is the name of the loader to register.

Params

Example

// create a loader from other loaders.
loaders.loader('foo', ['bar', 'baz']);
// pass a function
loaders.loader('foo', function(patterns, options) {
  return glob.sync(patterns, options);
});
// combination
loaders.loader('foo', ['bar', 'baz'], function(patterns, options) {
  return glob.sync(patterns, options);
});

.compose

Compose the actual load function from a loader stack.

Params

Example

var fn = loaders.compose('foo');
// load some files
var files = fn('*.txt');

Related libs

Running tests

Install dev dependencies:

$ npm i -d && npm test

Code coverage

Please help improve code coverage by adding unit tests.

-----------------|-----------|-----------|-----------|-----------|
File             |   % Stmts |% Branches |   % Funcs |   % Lines |
-----------------|-----------|-----------|-----------|-----------|
   loader-cache/ |     91.27 |     82.35 |     85.71 |      92.5 |
      index.js   |     91.27 |     82.35 |     85.71 |      92.5 |
-----------------|-----------|-----------|-----------|-----------|
All files        |     91.27 |     82.35 |     85.71 |      92.5 |
-----------------|-----------|-----------|-----------|-----------|

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue

Author

Jon Schlinkert

License

Copyright © 2015 Jon Schlinkert Released under the MIT license.


This file was generated by verb-cli on June 29, 2015.

<!-- deps:mocha -->