gulp-reduce-async
v1.0.0
Published
reduce all files in a gulp stream to a single file using the file contents directly
Downloads
1,048
Readme
gulp reduce async
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'));
});