# gulp-function

> accepts a function call as parameter to execute in gulp pipeline

Latest version **2.2.14** (published 2018-01-29) · MIT license · 0 weekly downloads

> **Deprecated.** This package is deprecated.

## Install

```sh
npm install gulp-function
pnpm add gulp-function
yarn add gulp-function
bun add gulp-function
```

## Health

**Score 10/100 (F)** — status: deprecated.

Negative: deprecated.

## Facts

| | |
|---|---|
| Version | 2.2.14 |
| Published | 2018-01-29 |
| First published | 2016-02-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 3 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Lossless GmbH |
| Maintainers | lossless |
| Keywords | gulpplugin, gulp, function, pushrocks |

## Links

- npm: https://www.npmjs.com/package/gulp-function
- Repository: https://gitlab.com/pushrocks/gulp-function
- Issues: https://gitlab.com/pushrocks/gulp-function/issues
- npm.io page: https://npm.io/package/gulp-function

## Dependencies (3)

- [smartq](https://npm.io/package/smartq.md) ^1.1.6
- [through2](https://npm.io/package/through2.md) ^2.0.3
- [@types/through2](https://npm.io/package/@types/through2.md) ^2.0.32

## Recent versions

- 2.2.14 (latest) — 2018-01-29
- 2.2.9 — 2017-04-30
- 2.2.7 — 2017-04-30
- 2.2.6 — 2017-04-29
- 2.2.5 — 2017-04-29
- 2.2.3 — 2016-12-04
- 2.2.2 — 2016-11-25
- 2.2.1 — 2016-11-25
- 2.2.0 — 2016-10-19
- 2.1.0 — 2016-10-18
- 1.3.6 — 2016-06-11
- 1.3.5 — 2016-06-03
- 1.3.4 — 2016-06-03
- 1.3.1 — 2016-04-07
- 1.2.5 — 2016-04-04
- … 11 more at https://npm.io/package/gulp-function/versions

## README

# gulp-function

accepts a function call as parameter to execute in gulp pipeline

## Availabililty

[![npm](https://pushrocks.gitlab.io/assets/repo-button-npm.svg)](https://www.npmjs.com/package/gulp-function)
[![git](https://pushrocks.gitlab.io/assets/repo-button-git.svg)](https://GitLab.com/pushrocks/gulp-function)
[![git](https://pushrocks.gitlab.io/assets/repo-button-mirror.svg)](https://github.com/pushrocks/gulp-function)
[![docs](https://pushrocks.gitlab.io/assets/repo-button-docs.svg)](https://pushrocks.gitlab.io/gulp-function/)

## Status for master

[![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)
[![npm downloads per month](https://img.shields.io/npm/dm/gulp-function.svg)](https://www.npmjs.com/package/gulp-function)
[![Dependency Status](https://david-dm.org/pushrocks/gulp-function.svg)](https://david-dm.org/pushrocks/gulp-function)
[![bitHound Dependencies](https://www.bithound.io/github/pushrocks/gulp-function/badges/dependencies.svg)](https://www.bithound.io/github/pushrocks/gulp-function/master/dependencies/npm)
[![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/)

### Usage

```typescript
import gulp = require('gulp');
import gulpFunction from "gulp-function"; // default ES6 export
// import {forFirst, forEach, atEnd} from 'gulp-function'

let myAsyncFunction = async (file, enc) => {
  // await some async stuff
};

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**!!!

For further information read the linked docs at the top of this README.

> MIT licensed | **&copy;** [Lossless GmbH](https://lossless.gmbh)
> | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)

[![repo-footer](https://pushrocks.gitlab.io/assets/repo-footer.svg)](https://push.rocks)

---
_Source: https://npm.io/package/gulp-function · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
