使用gulp进行简单的分环境配置

出发点

通常我们在测试开发,正式运行等不同环境中,代码所使用的某些配置,如请求的api地址,文件存放位置等是不同的,实现这些配置信息的统一管理和快速配置可以减少我们手动更改的麻烦。

解决方案

  • 将不同环境下的配置信息以json形式统一存储在config.json文件中

  • 添加constants的gulp任务,在运行其他task如serve,build前执行,主要负责根据命令行传入的environment参数,取出json文件中对应的环境配置信息,生成config.js导入到被引用的文件目录下。

  • 相应的js文件可以通过引用全局变量的方式使用配置信息。

配置步骤

创建config.json文件

{
  "development": {
    "apiUrl": "http://dev.applicationName.com/api/projectName/"
  },
  "production": {
    "apiUrl": "http://applicationName.com/api/projectName/"
  }
}

在gulpfile.js中添加constants任务

constants任务主要解决两个问题

  • 获取命令行中的env参数,从而取出对应的json配置

  • 将配置信息生成js文件

//npm install --save-dev minimist gulp-util

import minimist from 'minimist';
import gutil from 'gulp-util';

//默认development环境
var knowOptions = {
  string: 'env',
  default: {
    env: process.env.NODE_ENV || 'development'
  }
};

var options = minimist(process.argv.slice(2), knowOptions);

//生成filename文件,存入string内容
function string_src(filename, string) {
  var src = require('stream').Readable({ objectMode: true })
  src._read = function () {
    this.push(new gutil.File({ cwd: "", base: "", path: filename, contents: new Buffer(string) }))
    this.push(null)
  }
  return src
}

gulp.task('constants', function() {
  //读入config.json文件
  var myConfig = require('./config.json');
  //取出对应的配置信息
  var envConfig = myConfig[options.env];
  var conConfig = 'appconfig = ' + JSON.stringify(envConfig);
  //生成config.js文件
  return string_src("config.js", conConfig)
      .pipe(gulp.dest('app/scripts/'))
});

在其他任务前执行前执行constants 任务

gulp.task('serve', ['constants','styles', 'fonts'], () => {});

使用步骤

传入env参数

如下(默认是development环境下)

gulp serve --env production

生成的config.js文件内容

appconfig = {"apiUrl":"http://applicationName.com/api/projectName/"}

在js中使用配置信息

var share = function() {
  $.ajax({
    url: appconfig.apiUrl,
    data: {
      url: window.location.href
    }
  }).done(function(data) {
    //code ....
  });
};

其他

如果使用了angularJS,可以通过gulp-ng-constants插件进行分环境配置的实现

只是提供一个思路和实现的方法,可自行扩展优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值