如何将环境变量设置为gulp任务?

时间:2015-02-28 22:02:14

标签: node.js gulp environment-variables

每次运行gulp设置环境变量时,我都不想输入额外的参数NODE_ENV='production' gulp

我宁愿通过任务从gulp中设置环境变量

实现这一目标的好方法是什么?

5 个答案:

答案 0 :(得分:125)

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';
});

使用它像:

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'
    );
});

答案 1 :(得分:16)

尝试gulp-env

关于如何在运行nodemon任务之前设置一些环境变量的快速示例:

// gulpfile.js

var 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'])

答案 2 :(得分:11)

您还可以在package.json

中将其定义为脚本
{
  "name": "myapp",
  "scripts": {
    "gulp": "NODE_ENV='development' gulp",
    "gulp-build": "NODE_ENV='production' gulp"
  },
  ...
}

并使用npm run gulp-build运行它。这有一些好处

  • 您可以轻松定义参数,而不是每次都输入
  • 不需要全局gulp安装(与其他工具相同,如webpack)
  • 您可以使用不同的环境变量和(或)参数定义多个变体,而无需更改gulp文件(如上所示 - 分别用于开发和生产的gulp和gulp-build)

答案 3 :(得分:2)

您也可以默认设置一个,并从json文件中读取变量:

gulp.task('set-env', function () {
    var envId = gutil.env.env;
    if (!envId) {
      envId = "dev";
    }
    genv({
        file: "env." + envId + ".json"
    });
});

默认情况下这总是dev env,您可以调用它设置另一个env,如下所示:

gulp --env prod

更多gulp-env

答案 4 :(得分:1)

您可以按照以下步骤设置环境:

// Environment Setup
var env = process.env.NODE_ENV || 'development';

然后,您可以使用环境按以下方式处理代码:

gulp.task('js',function(){
gulp.src(jsPath)
.pipe(browserify({debug: env === 'development'}))
.pipe(gulpif(env === 'production' , uglify()))
.pipe(gulp.dest(jsDest));
});