gulp-chain

Prepare gulp plugin chains for re-use

Usage no npm install needed!

<script type="module">
  import gulpChain from 'https://cdn.skypack.dev/gulp-chain';
</script>

README

npm version Build Status Coverage Status dependencies dev-dependencies Codacy Badge

gulp-chain

Prepare a chain of pipes for use as a gulp plugin (or any other piped stream, there is no true dependency of gulp)

Installation

npm install --save-dev gulp-chain

As of version 2.0.0 gulp-chain requires NodeJS 4 or higher. If you are 'stuck' on NodeJS 0.10 - 0.12, you will need to specify the version (the latest in the v1 range is 1.1.0).

$ npm install --save-dev gulp-chain@^1.1.0

Usage

var chain = require('gulp-chain'),
    myStream = chain(function(stream) {
        return stream
            .pipe(pluginA())
            .pipe(pluginB())
            .pipe(pluginC())
        ;
    });

//  later on:
gulp.task('mytask', function() {
    gulp.src('./source/**/*')
        .pipe(pluginD())
        //  add the created myStream
        .pipe(myStream())
        //  and pipe it towards another plugin
        .pipe(pluginE())
        .pipe(gulp.dest('./destination'))
    ;
});

API

chain(function prepare [, ... ])

With gulp-chain you can prepare pretty much every chain, even provide default arguments. The function prepare has the following signature; function(stream input [, ... ]) This means that gulp-chain always provides a stream as first argument, followed by any argument given or predefined. The return value of gulp-chain is always a function which returns a stream that you can pipe into (like any other plugin in gulp).

Set up default arguments

In the following example, we prepare a chain which has an argument hello, which is set to the value 'hello world' by default.

var chain = require('gulp-chain'),
    myStream = chain(function(stream, hello) {
        return stream
            .pipe(pluginA())
            .pipe(pluginB(hello))
            .pipe(pluginC())
        ;
    }, 'hello world');

If the myStream-'plugin' is used without any arguments, the value of hello will contain 'hello world'

gulp.task('mytask', function() {
    gulp.src('./source/**/*')
        //  add the created myStream
        //  myStream will actually be invoked as: myStream('hello world')
        .pipe(myStream())  

        .pipe(gulp.dest('./destination'))
    ;
});

If you have no default value, or if you need to override it, you can supply another value.

gulp.task('mytask', function() {
    gulp.src('./source/**/*')
        //  add the created myStream
        .pipe(myStream('welcome stranger'))  

        .pipe(gulp.dest('./destination'))
    ;
});

You can provide any number of (default) arguments, just ensure the order remains the same.

License

GPLv2 © Konfirm Open