Skip to content
Use standard text transform streams to write fewer gulp plugins
Latest commit 9fdf7f5 Mar 5, 2015 @hughsk Merge pull request #6 from rileyjshaw/patch-1
Fix require() string
Failed to load latest commit information. first commit Jan 26, 2014 Fix require() string Mar 6, 2015
index.js remove unused duplexer2 dep Nov 26, 2014
package.json 1.0.0 Nov 27, 2014
test.js first commit Jan 26, 2014

vinyl-transform Flattr this!experimental

vinyl-transform wraps standard text transform streams so you can write fewer gulp plugins. Fulfills a similar use case to vinyl-map and vinyl-source-stream.

This module lets you take your standard text transform streams from npm, (e.g. envify), and use them in a vinyl pipeline. It'll transparently take care of handling both buffered and streaming vinyl instances for you too.




Creates a vinyl transform stream. transformFn(filename) is a function which takes the file's path and returns a text transform stream. If you've used browserify's transform API you'll recognise this pattern: it's effectively the same API used here.

Here's an example of using this to... uppercase a bunch of files:

var transform = require('vinyl-transform')
var map = require('map-stream')
var gulp = require('gulp')

gulp.task('uppercase', function() {
  var uppercaser = transform(function(filename) {
    return map(function(chunk, next) {
      return next(null, chunk.toString().toUpperCase())


And convert .gif images into .webm videos:

var createGIFStream = require('gif-video')
var transform = require('vinyl-transform')
var gulp = require('gulp')

gulp.task('gif-to-webm', function() {

Or inject scripts into your HTML:

var transform = require('vinyl-transform')
var inject = require('script-injector')
var gulp = require('gulp')

gulp.task('pages', function() {
  var injector = transform(function() {
    return inject(function() {
      console.log('this script wasn\'t here before')



MIT. See for details.

Something went wrong with that request. Please try again.