gulp-function/README.md

62 lines
3.4 KiB
Markdown
Raw Permalink Normal View History

2016-02-01 02:33:33 +00:00
# gulp-function
2015-09-17 21:06:35 +00:00
accepts call to execute in gulp pipeline.
## Availabililty
[![npm](https://push.rocks/assets/repo-button-npm.svg)](https://www.npmjs.com/package/gulp-function)
[![git](https://push.rocks/assets/repo-button-git.svg)](https://gitlab.com/pushrocks/gulp-function)
[![git](https://push.rocks/assets/repo-button-mirror.svg)](https://github.com/pushrocks/gulp-function)
[![docs](https://push.rocks/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/gulp-function/)
## Status for master
2016-06-03 23:25:55 +00:00
[![build status](https://gitlab.com/pushrocks/gulp-function/badges/master/build.svg)](https://gitlab.com/pushrocks/gulp-function/commits/master)
[![coverage report](https://gitlab.com/pushrocks/gulp-function/badges/master/coverage.svg)](https://gitlab.com/pushrocks/gulp-function/commits/master)
2016-02-01 02:33:33 +00:00
[![Dependency Status](https://david-dm.org/pushrocks/gulp-function.svg)](https://david-dm.org/pushrocks/gulp-function)
2016-02-14 18:01:24 +00:00
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/gulp-function/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/gulp-function/master/dependencies/npm)
2016-02-12 04:36:23 +00:00
[![bitHound Code](https://www.bithound.io/github/pushrocks/gulp-function/badges/code.svg)](https://www.bithound.io/github/pushrocks/gulp-function)
[![TypeScript](https://img.shields.io/badge/TypeScript-2.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%206.x.x-blue.svg)](https://nodejs.org/dist/latest-v6.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-standard-brightgreen.svg)](http://standardjs.com/)
2016-02-14 17:58:59 +00:00
2015-10-25 21:45:49 +00:00
### Usage
```javascript
2016-10-18 23:10:45 +00:00
import * as gulp from 'gulp';
import gulpFunction from 'gulp-function' // default ES6 export
2016-10-19 05:36:32 +00:00
// import {forFirst, forEach, atEnd} from 'gulp-function'
2016-10-18 22:47:29 +00:00
let Q = require("q");
2015-10-25 21:45:49 +00:00
2016-10-18 22:47:29 +00:00
let myFunction = function (file, enc) { // file and enc are optional in case you want to modify the file object
let done = Q.defer();
2015-10-25 21:45:49 +00:00
console.log("Hello World!")
2016-02-14 17:40:37 +00:00
// NOTE:
// you can use done.resolve as callback function
// of any async tasks within this function
done.resolve();
return done.promise;
2015-10-25 21:45:49 +00:00
}
gulp.task('gulpTest',function() {
2016-10-18 22:47:29 +00:00
let stream = gulp.src('./mydir/*.something')
2016-02-12 04:36:23 +00:00
.pipe(gulpFunction(myFunction,'forEach')) //read the notes below
2016-11-25 10:21:55 +00:00
// .pipe(forEach(myFunction)) // if imported as >> import { forEach } from 'gulp-function' <<
2016-02-14 17:42:45 +00:00
.pipe(gulp.dest("./build/"));
return stream; // by returning the stream gulp knows when our task has finished.
2015-10-25 21:45:49 +00:00
});
```
### 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
2016-06-03 23:14:25 +00:00
* 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.
2016-04-04 20:43:26 +00:00
* "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](https://push.rocks/assets/repo-header.svg)](https://push.rocks)