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 EasyUI API 中文文档 - TreeGrid 树表格使用介绍
Nov 21 Javascript
jQuery控制iFrame(实例代码)
Nov 19 Javascript
javascript实现iframe框架延时加载的方法
Oct 30 Javascript
Javascript中prototype的使用详解
Jun 18 Javascript
深入理解JS继承和原型链的问题
Dec 17 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
Feb 17 Javascript
微信小程序实现列表下拉刷新上拉加载
Jul 29 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
animate.css在vue项目中的使用教程
Aug 05 Javascript
javascript中toFixed()四舍五入使用方法详解
Sep 28 Javascript
vue 基于element-ui 分页组件封装的实例代码
Dec 10 Javascript
js数组中去除重复值的几种方法
Aug 03 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
在线增减.htpasswd内的用户
2006/10/09 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
Bootstrap缩略图与警告框学习使用
2017/02/08 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
详解React-Native解决键盘遮挡问题(Keyboard遮挡问题)
2017/07/13 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
微信小程序实现弹出菜单动画
2019/06/21 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
js实现简单点赞操作
2020/03/17 Javascript
小程序实现录音功能
2020/09/22 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
numpy数组拼接简单示例
2017/12/15 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
django基础学习之send_mail功能
2019/08/07 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
html5与css3小应用
2013/04/03 HTML / CSS
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
工作说明书格式
2014/07/29 职场文书
销售活动策划方案
2014/08/26 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书