A Gulp plugin to execute functions within a Gulp task pipeline.
Go to file
2017-04-30 01:07:35 +02:00
dist now cleans pipe correctly 2017-04-30 01:07:30 +02:00
test now cleans pipe correctly 2017-04-30 01:07:30 +02:00
ts now cleans pipe correctly 2017-04-30 01:07:30 +02:00
.gitignore add possibility to modify the file object 2016-10-19 00:35:41 +02:00
.gitlab-ci.yml update ci 2017-04-30 00:45:19 +02:00
.npmignore updated deps 2016-04-05 00:59:21 +02:00
LICENSE.md Update LICENSE.md 2015-09-03 20:20:41 +02:00
npmextra.json update ci 2017-04-30 00:45:19 +02:00
package.json 2.2.6 2017-04-30 01:07:35 +02:00
README.md improve README 2016-11-25 11:21:55 +01:00
tslint.json add possibility to modify the file object 2016-10-19 00:35:41 +02:00
yarn.lock now cleans pipe correctly 2017-04-30 01:07:30 +02:00

gulp-function

accepts call to execute in gulp pipeline.

Availabililty

npm git git docs

Status for master

build status coverage report Dependency Status bitHound Dependencies bitHound Code TypeScript node JavaScript Style Guide

Usage

import * as gulp from 'gulp';
import gulpFunction from 'gulp-function' // default ES6 export
// import {forFirst, forEach, atEnd} from 'gulp-function'
let Q = require("q");

let myFunction = function (file, enc) { // file and enc are optional in case you want to modify the file object
    let done = Q.defer();
    console.log("Hello World!")
    
    // NOTE:
    // you can use done.resolve as callback function
    // of any async tasks within this function
    done.resolve();
    
    return done.promise;
}

gulp.task('gulpTest',function() {
    let stream = gulp.src('./mydir/*.something')
        .pipe(gulpFunction(myFunction,'forEach')) //read the notes below
        // .pipe(forEach(myFunction)) // if imported as >> import { forEach } from 'gulp-function' <<
        .pipe(gulp.dest("./build/"));
    return stream; // by returning the stream gulp knows when our task has finished.
});

Notes:

  • The first argument of gulpFunction can also be an array of multiple functionnames. Each function can return a promise. The pipe stop will finish when every promise is fullfilled. When providing an array of functions be careful with modifying the file object -> race condition
  • The second argument can be empty, it defaults to "forEach"
  • The following options are available:
    • "forFirst" - executes when first chunk/vinylfile of the stream reaches the pipestop. file is pushed further down the line when function's returned promise is fullfilled.
    • "forEach" - executes like "forFirst" but with every chunk/vinylfile in the stream;
    • "atEnd" - executes after all chunks have passed and are processed in full. That means the stream's "finish" event fires before "atLast" is executed!!!

npm