A Gulp plug-in that makes it convenient to create separate environments, such as development and production, to run your tasks in.
Install the plugin using npm:
$ npm install --save-dev gulp-environments
Require the plug-in somewhere in your gulpfile.js
var environments = require('gulp-environments');
By default, the library defines two environments: development and production. For convenience sake, it is recommended to assign them to local variables:
var development = environments.development;
var production = environments.production;
You can use these environments as predicates (functions returning true/false depending on whether the given environment is active):
var source = production() ? "source.min.js" : "source.js";
You can also use the environment as a filter in you Gulp pipelines:
gulp.src(paths.js)
// this will only init sourcemaps in development
.pipe(development(sourcemaps.init()))
.pipe(concat("app.js"))
// only write out sourcemaps in development
.pipe(development(sourcemaps.write('.')))
// only minify the compiled JS in production mode
.pipe(production(uglify()))
.pipe(gulp.dest("./public/app/js/"));
By default, gulp-environments uses the NODE_ENV environment variable to determine environment:
NODE_ENV=development gulp build
You can also pass a command line flag --env to set it (takes precedence over NODE_ENV):
gulp build --env development
Alternatively, you can define a task that would set the appropriate environment before executing other tasks:
gulp.task('set-dev', development.task);
and run it (or make it a dependency of a task that should also be run in that environment):
gulp set-dev build
Finally, you can always set the environment by hand in your task definition:
environments.current(development);
You don't have to limit yourself to using only the two provided environments. You can create other ones by calling (in the example, we are creating an environment called staging):
var staging = environments.make("staging");
MIT
Adam Pohorecki