如何设置一个环境variables作为吞噬任务?

我不想在每次运行NODE_ENV='production' gulp设置一个环境variables时input额外的参数NODE_ENV='production' gulp

我宁愿通过一个任务从gulp中设置环境variables。

什么是实现这个目标的好方法?

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

试试gulp-env

运行nodemon任务之前如何设置一些环境variables的快速示例:

 // 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 。 这有几个好处

  • 您可以轻松定义参数,而不是每次input参数
  • 不需要全局的gulp安装(对于webpack等其他工具也是如此)
  • 你可以用不同的环境variables和(或)参数来定义多个variables,而不用改变gulp文件(正如你可以看到的那样 – 分别用于开发和生产的gulp和gulp-build)

你也可以默认设置一个,并从json文件读取variables:

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

这将是默认情况下始终dev ,你可以调用它设置另一个环境,如下所示:

gulp --env prod

更多的咕噜env