Package Exports
- vinyl-bufferstream
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (vinyl-bufferstream) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
vinyl-bufferstream
Deal with vinyl file contents, regardless of whether it is Buffer/Stream
var through = require('through2');
var VinylBufferStream = require('vinyl-bufferstream');
function yourGulpPlugin() {
var vinylBufferStream = new VinylBufferStream(function(buf, done) {
syncOrAsyncFn(buf, done);
});
return through.obj(function(file, enc, cb) {
vinylBufferStream(file, function(err, contents) {
if (err) {
self.emit('error', err);
} else {
file.contents = contents;
self.push(file);
}
cb();
});
});
}
Installation
npm install vinyl-bufferstream
API
var VinylBufferStream = require('vinyl-bufferstream');
vinylBufferStream = new VinylBufferStream(transformFunction)
(new
operator is optional.)
transformFunction: Function
Return: Function
The argument must be a function taking a Buffer
and a callback function as its first and second argument, which calls the callback function with passing Node-style callback arguments (error, result
).
vinylBufferStream(file, callback)
file: Object
(vinyl file object)
callback: Function
When the file.contents
is a Buffer
, it will call the transformFunction with passing file.contents to the first argument.
When the file.contents
is a Stream
, it will call the transformFunction with passing the buffered stream of file.contents to the first argument.
When the file.contents
is a Stream
, it won't call the transformFunction.
callback(err, contents)
error: Error
or null
contents: Buffer
or Stream
When the file.contents
is a Buffer
, contents will be a result that transformFunction produces.
When the file.contents
is a Stream
, contents will be a stream that emits a data transformFunction produces.
When the file.contents
is null
, contents will be null
.
var gulp = require('gulp');
var SVGO = require('svgo');
var through = require('through2');
var VinylBufferStream = require('vinyl-bufferstream');
function svgminPlugin(options) {
var svgo = new SVGO(options);
var vinylBufferStream = new VinylBufferStream(function(buf, done) {
svgo.optimize(String(buf), function(result) {
if (result.error) {
done(result.error);
return;
}
done(null, result.data);
});
});
return through.obj(function(file, enc, cb) {
vinylBufferStream(file, function(err, contents) {
if (err) {
self.emit('error', err);
} else {
file.contents = contents;
self.push(file);
}
cb();
});
});
}
gulp.task('buffer', function() {
return gulp.src('*.svg')
.pipe(svgminPlugin())
.pipe(gulp.dest('dest'));
});
gulp.task('stream', function() {
return gulp.src('*.svg', {buffer: false})
.pipe(svgminPlugin())
.pipe(gulp.dest('dest'));
});
License
Copyright (c) 2014 - 2015 Shinnosuke Watanabe
Licensed under the MIT License.