2.0.0 • Published 6 years ago

gulp-bufferify v2.0.0

Weekly downloads
398
License
ISC
Repository
github
Last release
6 years ago

Gulp Bufferify

A package for gulp developer to catch pipe stream content and modify it easily.

Install

npm install --save-dev gulp-bufferify

Usage

ES6:

import gulp from 'gulp'
import bufferify from 'gulp-bufferify'

CommonJS:

var gulp = require('gulp')
var { bufferify } = require('gulp-bufferify')
gulp.src('./some.html')
    .pipe(bufferify((content, file, context) => {
        content = content.toString()
        content = content.replace(/aws/g, 'gogo')
        return content
    }))
    .pipe(gulp.dest('.'))

Pass bufferify(factory) into .pipe.

Options

factory is a function, with four parameters.

content

The buffer content of the file. Use content.toString() to convert it to be text.

You can change the content, and return new content which will be used in next pipe in callback function. If no content returned, original content will be used in next pipe.

file

Buffer file, use file.path file.cwd file.base to get file info which is from previous pipe (so, gulp-rename will make sense, the position of this pipe is important).

For example, you can use this to change the file name and relative path. Previous content is always equal file.contents as metioned before.

context

Use this to modify pipe stream. For example:

gulp.src('./file.scss')
    .pipe(bufferify((content, file, context) => {
        let newfile = file.clone() // you can use clone property
        newfile.path = '...'
        newfile.contents = new Buffer(...)
        context.push(newfile)
    }))

Do like this, a new file will be added into pipe stream.

callback

You can pass the fourth argument callback for an async program. For example:

gulp.src('...')
    .pipe(bufferify((content, file, context, callback) => {
        // ...modify file
        setTimeout(() => callback(null, file), 10000)
    }))

Notice: if you use callback as an argument, you must call it in your function, or the pipe-line will be hold all the time.

If you have ever use through2, you may know this callback. In previous examples, I use context.push(file) to add a new file, in fact, in through2, you can use callback(null, file) to change file in pipe stream. So you can also do:

gulp.src('...')
    .pipe(bufferify((content, file, context, callback) => {
        // ...modify file
        setTimeout(() => {
          context.push(file)
          callback()
        }, 10000)
    }))
2.0.0

6 years ago

1.0.2

6 years ago

1.0.0

6 years ago

0.0.8

7 years ago

0.0.7

7 years ago

0.0.6

7 years ago

0.0.4

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago