0.6.1 • Published 9 years ago

loader-cache v0.6.1

Weekly downloads
156
License
MIT
Repository
github
Last release
9 years ago

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

  • type {String}
  • options {Object}
  • fn {Function}: The actual iterator function.
  • returns {Object}

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

  • name {String}
  • options {Object}
  • fns {Function|Array}: One or more loader functions or names of other registered loaders.
  • returns {Array}

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

  • name {String}: The name of the loader stack to use.
  • options {Object}
  • stack {Array|Function}: Additional loader names or functions.
  • returns {Function}

Example

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

Related libs

  • config-cache: General purpose JavaScript object storage methods.
  • cache-base: Generic object cache for node.js/javascript projects.
  • engine-cache: express.js inspired template-engine manager.
  • helper-cache: Easily register and get helper functions to be passed to any template engine or node.js… more
  • option-cache: Simple API for managing options in JavaScript applications.
  • parser-cache: Cache and load parsers, similiar to consolidate.js engines.

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.

0.6.1

9 years ago

0.6.0

9 years ago

0.5.0

9 years ago

0.4.0

9 years ago

0.3.2

9 years ago

0.3.1

9 years ago

0.3.0

9 years ago

0.2.5

9 years ago

0.2.4

9 years ago

0.2.3

9 years ago

0.2.2

9 years ago

0.2.1

9 years ago

0.2.0

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago