如何设置一个环境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