Как я могу установить переменную среды в качестве задачи gulp?
Я не хочу вводить дополнительные аргументы NODE_ENV='production' gulp каждый раз, когда я запускаю gulp, чтобы установить переменную окружения.
Я бы предпочел установить переменную среды изнутри глотка через задачу.
что было бы хорошим способом достичь этого?
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-сборка для разработки и производства соответственно)
вы также можете установить по умолчанию, и читать переменные из
jsonfile:gulp.task('set-env', function () { var envId = gutil.env.env; if (!envId) { envId = "dev"; } genv({ file: "env." + envId + ".json" }); });это будет всегда
devenv по умолчанию, и вы можете назвать это установкой другого env, например:
gulp --env prodбольше gulp-env
Comments