How can I set an environment variable as gulp task? How can I set an environment variable as gulp task? node.js node.js

How can I set an environment variable as gulp task?


gulp.task('set-dev-node-env', function() {    return process.env.NODE_ENV = 'development';});gulp.task('set-prod-node-env', function() {    return process.env.NODE_ENV = 'production';});

Use it like:

gulp.task('build_for_prod', ['set-prod-node-env'], function() {    // maybe here manipulate config object      config.paths.src.scripts = config.paths.deploy.scripts;    runSequence(        'build',        's3'    );});


You can also define it as a script in your package.json

{  "name": "myapp",  "scripts": {    "gulp": "NODE_ENV='development' gulp",    "gulp-build": "NODE_ENV='production' gulp"  },  ...}

And run it with npm run gulp-build. This has a few benefits

  • You can define arguments easily instead of typing them every time
  • Global gulp installation isn't required (same for other tools, like webpack)
  • You can define multiple variants with different environment variables and(or) arguments without changing the gulpfile (as you can see above - gulp and gulp-build for development and production respectively)


Try gulp-env

Quick example on how to set some environment variables before running the nodemon task:

// gulpfile.jsvar gulp = require('gulp');var nodemon = require('nodemon');var env = require('gulp-env');gulp.task('nodemon', function() {    // nodemon server (just an example task)});gulp.task('set-env', function () {  env({    vars: {      MONGO_URI: "mongodb://localhost:27017/testdb-for-british-eyes-only",      PORT: 9001    }  })});gulp.task('default', ['set-env', 'nodemon'])