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