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



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



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



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

870   4  

4 ответов:

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

попробовать глоток-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'])

вы также можете определить его как скрипт в вашем 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-сборка для разработки и производства соответственно)

вы также можете установить по умолчанию, и читать переменные из json file:

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

Comments

    Ничего не найдено.