gulp-environment

Adds easy environment configuration and conditional piping to Gulp, based on NODE_ENV or parameters with yargs.

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
gulp-environment
1.5.26 years ago8 years agoMinified + gzip package size for gulp-environment in KB

Readme

gulp-environment
Adds easy environment configuration and conditional piping to Gulp, based on NODEENV or parameters via yargs.
with :purple
heart:,
—@helloitsdan
Build Status
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

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)