Подтвердить что ты не робот

Как установить переменную среды как задачу gulp?

Я не хочу вводить дополнительные аргументы NODE_ENV='production' gulp при каждом запуске gulp для установки переменной среды.

Я предпочел бы установить переменную среды из gulp с помощью задачи.

Что было бы хорошим способом добиться этого?

4b9b3361

Ответ 1

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

Ответ 2

Попробуйте 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'])

Ответ 3

Вы также можете определить его как script в package.json

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

И запустите его с помощью npm run gulp-build. Это имеет несколько преимуществ

  • Вы можете легко определить аргументы, а не печатать их каждый раз
  • Глобальная установка gulp не требуется (то же самое для других инструментов, таких как webpack).
  • Вы можете определить несколько вариантов с различными переменными среды и (или) аргументами без изменения gulpfile (как вы можете видеть выше - gulp и gulp -build для разработки и производства соответственно)

Ответ 4

Вы также можете установить один по умолчанию и прочитать переменные из файла 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