A gulp plugin to conditionally run tasks for one or more environments.
Install the plugin using npm:
$ npm install gulp-if-env
Require in gulpfile.js
var ifEnv = require('gulp-if-env');
And use in your gulp tasks as such:
gulp.task('my-task', function () {
return gulp
.src('src/index.html')
.pipe(ifEnv('production', myProductionTask()))
.pipe(gulp.dest('public/'));
});
Want to run a task on all but one environment? Use not
:
gulp.task('my-task', function () {
return gulp
.src('src/index.html')
.pipe(ifEnv.not('development', nonDevelopmentTask()))
.pipe(gulp.dest('public/'));
});
Or want to specify specific environments? No problem! Just use the includes
function:
gulp.task('my-task', function () {
return gulp
.src('src/index.html')
.pipe(ifEnv.includes('production', 'staging', myProductionTask()))
.pipe(gulp.dest('public/'));
});
There are three main interfaces to the main function:
ifEnv(); // Returns current environment
ifEnv('production'); // Returns `true` for production, `false` for other
ifEnv('production', myGulpTask()); // Returns `myGulpTask` stream for production, otherwise no-op
There are two main interfaces to the not()
function:
ifEnv.not('production'); // Returns `true` in production, `false` for others
ifEnv.not('production', myGulpTask()); // Returns `myGulpTask` stream for production, otherwise no-op
There are two main interfaces to the includes()
function:
ifEnv.includes('production', 'staging'); // Returns `true` in production and staging, `false` for others
ifEnv.includes('production', 'staging', myGulpTask()); // Returns `myGulpTask` stream for production and staging, otherwise no-op
There are two main interfaces to the excludes()
function:
ifEnv.excludes('production', 'staging'); // Returns `false` in production and staging, `true` for others
ifEnv.excludes('production', 'staging', myGulpTask()); // Returns no-op in production and staging, `myGulpTask` for others
Sets a new environment if a change is required, or if your environment is specified somewhere other than NODE_ENV
or as env
CLI argument
ifEnv.set('staging');
ifEnv('production'); // Returns false
ifEnv('staging'); // Returns true
Resets to default (NODE_ENV
or env
CLI argument)
ifEnv.set('staging');
ifEnv('staging'); // Returns true
ifEnv.reset();
ifEnv('staging'); // Returns false
ifEnv('development'); // Returns true
Feel free to create an issue or pull request if you see something amiss. Thanks!