一般咱们在测试开发,正式运行等不一样环境中,代码所使用的某些配置,如请求的api地址,文件存放位置等是不一样的,实现这些配置信息的统一管理和快速配置能够减小咱们手动更改的麻烦。git
将不一样环境下的配置信息以json形式统一存储在config.json文件中github
添加constants的gulp任务,在运行其余task如serve,build前执行,主要负责根据命令行传入的environment参数,取出json文件中对应的环境配置信息,生成config.js导入到被引用的文件目录下。ajax
相应的js文件能够经过引用全局变量的方式使用配置信息。npm
{ "development": { "apiUrl": "http://dev.applicationName.com/api/projectName/" }, "production": { "apiUrl": "http://applicationName.com/api/projectName/" } }
获取命令行中的env参数,从而取出对应的json配置json
将配置信息生成js文件gulp
//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/')) });
gulp.task('serve', ['constants','styles', 'fonts'], () => {});
以下(默认是development环境下)api
gulp serve --env production
appconfig = {"apiUrl":"http://applicationName.com/api/projectName/"}
var share = function() { $.ajax({ url: appconfig.apiUrl, data: { url: window.location.href } }).done(function(data) { //code .... }); };
若是使用了angularJS,能够经过gulp-ng-constants插件进行分环境配置的实现app
只是提供一个思路和实现的方法,可自行扩展优化测试