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 淡入淡出 png图在ie8下有黑色边框的解决方法
Mar 05 Javascript
JavaScript将Table导出到Excel实现思路及代码
Mar 13 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
May 31 Javascript
BootStrapTable服务器分页实例解析
Dec 20 Javascript
深入理解Javascript中的作用域链和闭包
Apr 25 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
Sep 19 Javascript
ios中视频的最后一桢问题解决
May 14 Javascript
实例详解带参数的 npm script
May 28 Javascript
javascript实现fetch请求返回的统一拦截
Dec 22 Javascript
Vue数据双向绑定原理实例解析
May 15 Javascript
JS 4个超级实用的小技巧 提升开发效率
Oct 05 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
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP实现提高SESSION响应速度的几种方法详解
2019/08/09 PHP
jquery tools 系列 scrollable学习
2009/09/06 Javascript
JavaScript 变量基础知识
2009/11/07 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
JS读取XML文件示例代码
2013/11/15 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
vue.js声明式渲染和条件与循环基础知识
2017/07/31 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
python实现数据写入excel表格
2018/03/25 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
python实现学生通讯录管理系统
2021/02/25 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
葡萄牙语专业个人求职信
2013/12/10 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
助人为乐道德模范事迹材料
2014/08/16 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
圣诞节开幕词
2015/01/29 职场文书