webpack + vue 打包生成公共配置文件(域名) 方便动态修改


Posted in Javascript onAugust 29, 2019

需求原因

      原来的项目中域名是打包到项目里面的,打包后不能动态配置,只能通过不同的指令打包来切换域名,每天都在测试域名和正式域名来回摩擦,后台大佬说你们可以生成一个配置文件这样就不用频繁打包了直接修改配置文件就好,于是就有了这篇文章。

第一步 安装插件     

npm install --save-dev generate-asset-webpack-plugin

第二步 新建配置文件

在项目的根目录下新建 serverConfig.json 以后会根据这个文件去生成打包的配置文件

{"ProdUrl":http://text.com}

第三步 引入generate-asset-webpack-plugin

在build/webpack.prod.conf.js中添加

const GenerateAssetPlugin = require('generate-asset-webpack-plugin');
const serverConfig = require('../serverConfig.json');//引入根目录下的配置文件
const createJson = function() {
 return JSON.stringify(serverConfig);
};
//plugins 中使用
 plugins: [
 //打包时生成一个配置文件
 new GenerateAssetPlugin({
  filename: 'serverConfig.json',
  fn: (compilation, cb) => {
   cb(null, createJson());
  },
 }),
]

第四步 使用配置文件中的内容

这里根据不同项目不同需求代码自行变换,我分享一下我的项目里的使用,项目中封装了axios,并对请求拦截做了处理

service.interceptors.request.use(
 async (config) => {
  var baseURL = process.env.BASE_API
  if(process.env.NODE_ENV === "production"){
  await axios.get('serverConfig.json').then( e => {
   baseURL = e.data.ProdUrl
  })
  }
  config.baseURL = baseURL
  if (store.getters.token) {
  // 让每个请求携带token
  config.headers["X-Token"] = getToken();
  config.headers = {
   "X-Token": getToken(),
   "Content-Type": "application/json-patch+json"
  };
  }
  return config;
 },
 error => {
  // Do something with request error
  console.log(error); // for debug
  Promise.reject(error);
 }
 );

变黄的部分则是获取配置文件的方法,由于是使用axios获取,是异步方法,根据情况进行处理。、

好了接下来就再也不用为了域名每天build了

打包后的目录

总结

以上所述是小编给大家介绍的webpack + vue 打包生成公共配置文件(域名) 方便动态修改,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
JQuery 学习笔记 选择器之六
Jul 23 Javascript
IE event.srcElement和FF event.target 功能比较
Mar 01 Javascript
jQuery对象数据缓存Cache原理及jQuery.data方法区别介绍
Apr 07 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
window.onresize 多次触发的解决方法
Nov 08 Javascript
JavaScript中的substr()方法使用详解
Jun 06 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
Dec 13 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
利用node.js如何搭建一个简易的即时响应服务器
May 28 Javascript
JavaScript函数绑定用法实例分析
Nov 14 Javascript
ionic4+angular7+cordova上传图片功能的实例代码
Jun 19 Javascript
JavaScript中10个Reduce常用场景技巧
Jun 21 Javascript
微信小程序实现购物车代码实例详解
Aug 29 #Javascript
vue图片加载失败时用默认图片替换的方法
Aug 29 #Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
Aug 29 #Javascript
Angular8路由守卫原理和使用方法
Aug 29 #Javascript
Vue中的循环及修改差值表达式的方法
Aug 29 #Javascript
vue父子组件通信的高级用法示例
Aug 29 #Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
Aug 28 #Javascript
You might like
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
PHP设计模式之注册树模式分析
2018/01/26 PHP
DWR Ext 加载数据
2009/03/22 Javascript
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
用显卡加速,轻松把笔记本打造成取暖器的办法!
2013/04/17 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
node.js require() 源码解读
2015/12/13 Javascript
javascript数组克隆简单实现方法
2015/12/16 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
详解javascript实现自定义事件
2016/01/19 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
js原生日历的实例(推荐)
2017/10/31 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
JavaScript遍历数组和对象的元素简单操作示例
2019/07/09 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
[13:18]《一刀刀一天》之DOTA全时刻21:详解TI新赛制 A队再露獠牙
2014/06/24 DOTA
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
基本款天堂:Everlane
2017/05/13 全球购物
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
店长岗位的工作内容
2013/11/12 职场文书
青年文明号复核材料
2014/02/11 职场文书
《珍珠泉》教学反思
2014/02/20 职场文书
一份恶作剧的检讨书
2014/09/13 职场文书
村官个人总结范文
2015/03/03 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
2015年度工程师评职称工作总结
2015/10/14 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python