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 相关文章推荐
javascript 关闭IE6、IE7
Jun 01 Javascript
javascript一个无懈可击的实例化XMLHttpRequest的方法
Oct 13 Javascript
js 判断脚本加载完毕的代码
Jul 13 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
Aug 17 Javascript
基于jquery实现省市联动效果
Nov 23 Javascript
js实现tab选项卡切换功能
Jan 13 Javascript
JS中mouseup事件丢失的原因与解决办法
Jun 14 Javascript
Node.js readline模块与util模块的使用
Mar 01 Javascript
浅谈Postman解决token传参的问题
Mar 31 Javascript
spring+angular实现导出excel的实现代码
Feb 27 Javascript
Javascript Web Worker使用过程解析
Mar 16 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
图形数字验证代码
2006/10/09 PHP
解析php中mysql_connect与mysql_pconncet的区别详解
2013/05/15 PHP
JS 自动安装exe程序
2008/11/30 Javascript
js判断登录与否并确定跳转页面的方法
2015/01/30 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
2018/11/27 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python获取网页上图片下载地址的方法
2015/03/11 Python
python冒泡排序简单实现方法
2015/07/09 Python
python计算auc指标实例
2017/07/13 Python
简单实现python聊天程序
2018/04/01 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
python识别图像并提取文字的实现方法
2019/06/28 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
教师对学生的评语
2014/04/28 职场文书
听课评课活动心得体会
2016/01/15 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript
Python Pandas常用函数方法总结
2021/06/15 Python
python 网络编程要点总结
2021/06/18 Python
javascript函数式编程基础
2021/09/15 Javascript
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫