如何将环境变量设置为gulp任务?

问题描述 投票:55回答:5

每次运行gulp设置环境变量时,我都不希望输入额外的参数NODE_ENV='production' gulp

我宁愿通过任务从gulp中设置环境变量。

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

node.js gulp environment-variables
5个回答
126
投票
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'
    );
});

16
投票

试试gulp-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'])

13
投票

您也可以在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-build)

2
投票

您也可以默认设置一个,并从json文件中读取变量:

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

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

gulp --env prod

更多gulp-env


2
投票

您可以按如下方式设置环境:

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

然后,您可以使用该环境来处理代码,如下所示:

gulp.task('js',function(){
gulp.src(jsPath)
.pipe(browserify({debug: env === 'development'}))
.pipe(gulpif(env === 'production' , uglify()))
.pipe(gulp.dest(jsDest));
});
© www.soinside.com 2019 - 2024. All rights reserved.