# gulp-shell

> A handy command line interface for gulp

Latest version **0.8.0** (published 2020-02-12) · MIT license · 0 weekly downloads

## Install

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

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.8.0 |
| Published | 2020-02-12 |
| First published | 2014-02-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=10.0.0 |
| Dependencies | 6 |
| Unpacked size | 14.2 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 478 |
| Author | Sun Zheng'an |
| Maintainers | sun-zheng-an |
| Keywords | gulpplugin, gulp, shell, command |

## Links

- npm: https://www.npmjs.com/package/gulp-shell
- Repository: https://github.com/sun-zheng-an/gulp-shell
- Issues: https://github.com/sun-zheng-an/gulp-shell/issues
- npm.io page: https://npm.io/package/gulp-shell

## Dependencies (6)

- [chalk](https://npm.io/package/chalk.md) ^3.0.0
- [tslib](https://npm.io/package/tslib.md) ^1.10.0
- [through2](https://npm.io/package/through2.md) ^3.0.1
- [fancy-log](https://npm.io/package/fancy-log.md) ^1.3.3
- [plugin-error](https://npm.io/package/plugin-error.md) ^1.0.1
- [lodash.template](https://npm.io/package/lodash.template.md) ^4.5.0

## Alternatives

- [@salesforce/cli](https://npm.io/package/@salesforce/cli.md) — 389.7K weekly downloads
- [@mintlify/cli](https://npm.io/package/@mintlify/cli.md) — 208.9K weekly downloads
- [@grafana/e2e-selectors](https://npm.io/package/@grafana/e2e-selectors.md) — 128.7K weekly downloads
- [mintlify](https://npm.io/package/mintlify.md) — 112.0K weekly downloads
- [@intlayer/cli](https://npm.io/package/@intlayer/cli.md) — 22.8K weekly downloads

## Recent versions

- 0.8.0 (latest) — 2020-02-12
- 0.7.1 — 2019-06-07
- 0.7.0 — 2019-03-02
- 0.6.5 — 2017-12-30
- 0.6.4 — 2017-12-30
- 0.6.3 — 2017-03-07
- 0.6.2 — 2017-03-06
- 0.6.1 — 2017-02-23
- 0.6.0 — 2017-02-22
- 0.5.2 — 2016-01-24
- 0.5.1 — 2015-10-29
- 0.5.0 — 2015-10-07
- 0.4.3 — 2015-08-29
- 0.4.2 — 2015-06-03
- 0.4.1 — 2015-04-15
- … 14 more at https://npm.io/package/gulp-shell/versions

## README

# gulp-shell

[![NPM version](https://img.shields.io/npm/v/gulp-shell.svg)](https://npmjs.org/package/gulp-shell)
[![Build Status](https://img.shields.io/travis/sun-zheng-an/gulp-shell/master.svg)](https://travis-ci.org/sun-zheng-an/gulp-shell)
[![Coveralls Status](https://img.shields.io/coveralls/sun-zheng-an/gulp-shell/master.svg)](https://coveralls.io/r/sun-zheng-an/gulp-shell)
[![Dependency Status](https://img.shields.io/david/sun-zheng-an/gulp-shell.svg)](https://david-dm.org/sun-zheng-an/gulp-shell)
[![Downloads](https://img.shields.io/npm/dm/gulp-shell.svg)](https://npmjs.org/package/gulp-shell)

> A handy command line interface for gulp

## Installation

```shell
npm install --save-dev gulp-shell
```

## Usage

```js
const gulp = require('gulp')
const shell = require('gulp-shell')

gulp.task('example', () => {
  return gulp
    .src('*.js', { read: false })
    .pipe(shell(['echo <%= file.path %>']))
})
```

Or you can use this shorthand:

```js
gulp.task('greet', shell.task('echo Hello, World!'))
```

You can find more examples in the [gulpfile](https://github.com/sun-zheng-an/gulp-shell/blob/master/gulpfile.ts) of this project.

**WARNING**: Running commands like ~~`gulp.src('').pipe(shell('whatever'))`~~ is [considered as an anti-pattern](https://github.com/sun-zheng-an/gulp-shell/issues/55). **PLEASE DON'T DO THAT ANYMORE**.

## API

### shell(commands, options) or shell.task(commands, options)

#### commands

type: `string` or `Array<string>`

A command can be a [template][] which can be interpolated by some [file][] info (e.g. `file.path`).

**WARNING**: [Using command templates can be extremely dangerous](https://github.com/sun-zheng-an/gulp-shell/issues/83). Don't shoot yourself in the foot by ~~passing arguments like `$(rm -rf $HOME)`~~.

#### options.cwd

type: `string`

default: [`process.cwd()`](http://nodejs.org/api/process.html#process_process_cwd)

Sets the current working directory for the command. This can be a [template][] which can be interpolated by some [file][] info (e.g. `file.path`).

#### options.env

type: `object`

By default, all the commands will be executed in an environment with all the variables in [`process.env`](http://nodejs.org/api/process.html#process_process_env) and `PATH` prepended by `./node_modules/.bin` (allowing you to run executables in your Node's dependencies).

You can override any environment variables with this option.

For example, setting it to `{ PATH: process.env.PATH }` will reset the `PATH` if the default one brings your some troubles.

#### options.shell

type: `string`

default: `/bin/sh` on UNIX, and `cmd.exe` on Windows

Change it to `bash` if you like.

#### options.quiet

type: `boolean`

default: `false`

By default, it will print the command output.

#### options.verbose

type: `boolean`

default: `false`

Set to `true` to print the command(s) to stdout as they are executed

#### options.ignoreErrors

type: `boolean`

default: `false`

By default, it will emit an `error` event when the command finishes unsuccessfully.

#### options.errorMessage

type: `string`

default: `` Command `<%= command %>` failed with exit code <%= error.code %> ``

You can add a custom error message for when the command fails.
This can be a [template][] which can be interpolated with the current `command`, some [file][] info (e.g. `file.path`) and some error info (e.g. `error.code`).

#### options.templateData

type: `object`

The data that can be accessed in [template][].

[template]: http://lodash.com/docs#template
[file]: https://github.com/wearefractal/vinyl

## Changelog

Details changes for each release are documented in the [release notes](https://github.com/sun-zheng-an/gulp-shell/releases).

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