gulp-environment
Version:
Adds easy environment configuration and conditional piping to Gulp, based on NODE_ENV or parameters with yargs.
99 lines (68 loc) • 3.13 kB
Markdown
# gulp-environment
Adds easy environment configuration and conditional piping to Gulp, based on NODE_ENV or parameters via yargs.
with :purple_heart:,<br />
—
[](https://travis-ci.org/helloitsdan/gulp-environment)
# Usage
This module will load a list of available environments and try to figure out which one it's currently running in by looking at the `env` parameter first, falling back to the `NODE_ENV` environment variable if that doesn't exist, and then `config.default` last. These can be specified either by name directly, or by one of a few aliases. For example, development mode can be referenced as either `development`, `dev`, or `local` by default.
To run gulp in production mode using this module, specify your environment either via `gulp --env=production` or `NODE_ENV=production gulp`. Your gulp tasks will then be able to conditionally pipe plugins as follows...
## Example
```javascript
var gulp = require('gulp')
var env = require('gulp-environment')
var cleanCSS = require('gulp-clean-css')
gulp.task('minify-css', function() {
return gulp.src([
'assets/css/**/*.css'
])
.pipe(
env.if.production(cleanCSS()).else(neverRunThisOnLive())
)
.pipe(gulp.dest('web/assets/css/'))
})
```
## Confguring environments
The module will first try to find a `.gulpenvrc` file from your current working directory. This should be a JSON file, formatted as follows:
```
{
"environments": [
{
"name": "development",
"aliases": [ "dev", "local" ]
},
...
],
"default": "development"
}
```
If the module cannot find a `.gulpenvrc`, it'll try and find the nearest `package.json` file and load config from the `gulp-environment` block. If neither of these are found, it'll use the default config specified in this module's `.gulpenvrc`.
## API
Each of the methods below will be created for each of the environments defined in config.js—by default, this is development, qa, and production.
### env.current
A getter/setter to access the current environment.
### env.is.environment()
Returns a boolean representing whether or not the current environment is `environment`.
```
var headers = env.is.qa() ? "QA" : "Live";
```
This function can also be accessed manually via `env.is(environment)`
### env.if.environment(ifTrue)[.else(ifFalse)]
Returns `ifTrue` if the current environment is `environment`, otherwise returns a no-op. If the `else` chaining function is used, `ifFalse` will be returned when not in `environment`, otherwise `ifTrue` will be returned as normal.
```
...
.pipe(
env.if.production(cleanCSS()).else(neverRunThisOnLive())
)
...
```
This function can also be accessed manually via `env.if(environment, ifTrue[, ifFalse])`
### env.if.not.environment(ifFalse)
Returns `ifFalse` if the current environment is not `environment`, otherwise returns a no-op.
```
...
.pipe(
env.if.not.development(cleanCSS())
)
...
```
This function can also be accessed manually via `env.if.not(environment, ifFalse)`