web-dev-qa-db-fra.com

Comment définir une variable d'environnement en tant que tâche gulp?

Je ne veux pas taper les arguments supplémentaires NODE_ENV='production' gulp chaque fois que je lance gulp pour définir une variable d’environnement.

Je préférerais définir la variable d'environnement de gulp via une tâche.

Quel serait un bon moyen d'y parvenir?

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

Utilisez-le comme:

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

Essayez gulp-env

Exemple rapide sur la manière de définir certaines variables d'environnement avant d'exécuter la tâche 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'])
16
talkol

Vous pouvez également le définir en tant que script dans votre package.json

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

Et lancez-le avec npm run gulp-build. Cela a quelques avantages

  • Vous pouvez définir des arguments facilement au lieu de les saisir à chaque fois
  • L'installation Global Gulp n'est pas requise (idem pour d'autres outils, tels que Webpack)
  • Vous pouvez définir plusieurs variantes avec différents variables d'environnement et (ou) arguments sans changer le gulpfile (comme vous pouvez le voir ci-dessus - gulp et gulp-build pour le développement et la production, respectivement)
12
rzr

Vous pouvez configurer l’environnement comme suit:

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

Ensuite, vous pouvez utiliser l'environnement pour traiter le code comme suit:

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

Vous pouvez également en définir un par défaut et lire les variables à partir d'un fichier json:

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

Cela serait toujours dev env par défaut, et vous pourriez l'appeler en définissant un autre env, comme ceci:

gulp --env prod

Plus de gulp-env

2
gonzalon