How can I set an environment variable as gulp task?

后端 未结 5 1011
感动是毒
感动是毒 2020-12-23 18:45

I don\'t want type the extra arguments NODE_ENV=\'production\' gulp every time I run gulp to set an environment variable.

I would rather set the environ

相关标签:
5条回答
  • 2020-12-23 19:22

    You can Setup the environment like follows:

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

    Then you can use the environment to process the code as follows:

    gulp.task('js',function(){
    gulp.src(jsPath)
    .pipe(browserify({debug: env === 'development'}))
    .pipe(gulpif(env === 'production' , uglify()))
    .pipe(gulp.dest(jsDest));
    });
    
    0 讨论(0)
  • 2020-12-23 19:24

    You can also set one by default, and read the variables from a json file:

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

    This would be always dev env by default, and you could call it setting another env, like this:

    gulp --env prod

    More of gulp-env

    0 讨论(0)
  • 2020-12-23 19:27

    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)
    0 讨论(0)
  • 2020-12-23 19:34
    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'
        );
    });
    
    0 讨论(0)
  • 2020-12-23 19:43

    Try gulp-env

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

    // 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'])
    
    0 讨论(0)
提交回复
热议问题