Package Exports
- through-gulp
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 (through-gulp) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
through-gulp
A tiny wrapper around Node streams. To make gulp plugin write easier. Inspired by through2, (https://github.com/rvagg/through2/), but much simplify for gulp-plugin development for some reason.
Install
npm install through-gulp --saveAPI
One main API provided to use.
var through = require('through-gulp');
var stream = through(transformFunction, flushFunction);Both argument has default value to pipe data next without processing. if just for files map or files filter, two shortcut method provided as well.
// './test/fixtures/template.js'
define({});
// './test/fixtures/destiny.js'
define(function(){});it('something should work right', function(done) {
gulp.src(['./test/fixtures/template.js','./test/fixtures/destiny.js'])
.pipe(through.map(function(file) {
file.contents = Buffer.concat([new Buffer('love '), file.contents]);
return file;
}))
.pipe(assert.first(function(file) {
(file.contents.toString()).should.equal('love define({});');
}))
.pipe(assert.end(done));
})it('something should work right', function(done) {
gulp.src(['./test/fixtures/template.js','./test/fixtures/destiny.js'])
.pipe(through.filter(function(file) {
return file.contents.toString().indexOf('function') !== -1;
}))
.pipe(assert.first(function(file) {
(file.contents.toString()).should.equal('define(function(){});');
}))
.pipe(assert.end(done));
})Usage
A simple demonstrate about write gulp-plugin with through-gulp. If you know nothing about gulp plugin, check this first. (https://github.com/gulpjs/gulp/blob/master/docs/writing-a-plugin/guidelines.md)
// PLUGIN_NAME: sample
var through = require('through-gulp');
function sample() {
// creating a stream through which each file will pass
var stream = through(function(file, encoding,callback) {
// do whatever necessary to process the file
if (file.isNull()) {
}
if (file.isBuffer()) {
}
if (file.isStream()) {
}
// just pipe data next, or just do nothing to process file later in flushFunction
// never forget callback to indicate that the file has been processed.
this.push(file);
callback();
},function(callback) {
// just pipe data next, just callback to indicate that the stream's over
this.push(something);
callback();
});
// returning the file stream
return stream;
};
// exporting the plugin
module.exports = sample;then use the plugin with gulp
var gulp = require('gulp');
var sample = require('sample');
gulp.task('sample', function() {
return gulp.src(['source file'])
.pipe(sample())
.pipe(gulp.dest('file destiny'))
});Contact
Email: hjj491229492@hotmail.com.