Skip to content

Latest commit

 

History

History
171 lines (126 loc) · 5.37 KB

README.md

File metadata and controls

171 lines (126 loc) · 5.37 KB

base-pipeline NPM version NPM downloads Build Status

base-methods plugin that adds pipeline and plugin methods for dynamically composing streaming plugin pipelines.

Install

Install with npm:

$ npm install base-pipeline --save

Usage

var base = require('base-methods');
var pipeline = require('base-pipeline');
var bfs = require('base-fs');

// create your application and add the plugin
var app = base()
  .use(pipeline())
  .use(bfs)

// plugins may return a function
app.plugin('a', function() {
  return through.obj(function(file, enc, next) {
    next(null, file);
  });
});

// or a stream
app.plugin('b', through.obj(function(file, enc, next) {
  next(null, file);
}));

// use registered plugins
app.src(['foo/*.hbs'])
  .pipe(app.pipeline(['a', 'b']))
  .pipe(app.dest('site/'))

Supported signatures

Array of registered plugin names:

// register plugins
app.plugin('a', function() {});
app.plugin('b', function() {});

// pipeline
app.src(['foo/*.hbs'])
  .pipe(app.pipeline(['a', 'b']))
  .pipe(app.dest('site/'))

List of registed plugin names:

// register plugins
app.plugin('a', function() {});
app.plugin('b', function() {});

// pipeline
app.src(['foo/*.hbs'])
  .pipe(app.pipeline('a', 'b'))
  .pipe(app.dest('site/'))

Stacked:

// register plugins
app.plugin('a', function() {});
app.plugin('b', function() {});
app.plugin('c', function() {});

// pipeline
app.src(['foo/*.hbs'])
  .pipe(app.pipeline('a'))
  .pipe(app.pipeline('b'))
  .pipe(app.pipeline('c'))
  .pipe(app.dest('site/'))

Functions that return a stream:

app.src(['foo/*.hbs'])
  .pipe(app.pipeline(function() {
    return through.obj(function(file, enc, next) {
      next(null, file);  
    })
  }))
  .pipe(app.pipeline(function() {
    return through.obj(function(file, enc, next) {
      next(null, file);  
    })
  }))
  .pipe(app.dest('site/'))

Streams:

In general, it's a best practice for plugins to return a function that returns a stream. This ensures that every time the function is called a new stream is returned.

app.src(['foo/*.hbs'])
  .pipe(app.pipeline(through.obj(function(file, enc, next) {
    next(null, file);  
  }))
  .pipe(app.pipeline(through.obj(function(file, enc, next) {
    next(null, file);  
  }))
  .pipe(app.dest('site/'))

Related projects

You might also be interested in these projects:

  • base-cli: Plugin for base-methods that maps built-in methods to CLI args (also supports methods from a… more | homepage
  • base-config: base-methods plugin that adds a config method for mapping declarative configuration values to other 'base'… more | homepage
  • base-data: adds a data method to base-methods. | homepage
  • base-methods: base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… more | homepage
  • base-options: Adds a few options methods to base-methods, like option, enable and disable. See the readme… more | homepage
  • base-plugins: Upgrade's plugin support in base applications to allow plugins to be called any time after… more | homepage
  • base-store: Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object… more | homepage

Contributing

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

Building docs

Generate readme and API documentation with verb:

$ npm install verb && npm run docs

Or, if verb is installed globally:

$ verb

Running tests

Install dev dependencies:

$ npm install -d && npm test

Author

Jon Schlinkert

License

Copyright © 2016, Jon Schlinkert. Released under the MIT license.


This file was generated by verb, v0.9.0, on May 25, 2016.