1.0.0 • Published 8 years ago

gulp-reduce-async v1.0.0

Weekly downloads
13
License
ISC
Repository
github
Last release
8 years ago

gulp reduce async

Build Test Coverage Code Climate Downloads Version Dependency Status

Reduce all files in a gulp stream to a single file using the file contents directly.

Install

npm install gulp-reduce-async

API

gulp-reduce-async(iterator {Function}, memo {String|Buffer} , encoding {String})

The module is a function that can be used to set up the reduce operation. It takes the following parameters, in order:

  • iterator {Function} - the iterator method that will be used to process each file.
  • memo {String|Buffer} - the initial value to use as the memo for the iterator.
  • encoding {String} Optional - the encoding to use for the content provided to the iterator method. By default, this is a UTF-8 string. The following options are supported:
    • 'utf8' - provide the content in a UTF-8 string.
    • 'buffer' - provide the content in a raw buffer. This is useful if you are processing binary files, for example.

iterator(memo {String|Buffer}, content {String|Buffer}, file {Object}, callback {Function})

This is the declaration of the iterator function. It takes the following parameters, in order:

  • memo {String|Buffer} - the current value of the reduce operation. This will be the initial memo value passed to the reduce method on the first call of the iterator, and the memo value passed to the callback of the previos iteration after that.
  • content {String|Buffer} - the content of the current file being iterated.
  • file {Object} - the actual vinyl file object for the current file.
  • callback {Function} - the method to call when done processing the file. This method takes an error as its first parameter (or null if no error occured), and the new memo value as the second parameter.

Note that the resulting file will be named reduced with no extension. If you want to use a more meaningful name, you can use a module like gulp-rename to accomplish that.

Examples

var gulp = require('gulp');
var reduce = require('gulp-reduce-async');
var rename = require('gulp-rename');

gulp.task('files-to-json', function () {
    return gulp.src('myfiles/*')
        .pipe(reduce(memo, content, file, cb) {
            var json = JSON.parse(memo);

            json[file.path] = content;

            cb(null, JSON.stringify(json));
        }, '{}')
        .pipe(rename('allfiles.json'))
        .pipe(dest('dist'));
});