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 相关文章推荐
动态加载js的几种方法
Oct 23 Javascript
Javascript操纵Cookie实现购物车程序
Nov 23 Javascript
niceTitle 基于jquery的超链接提示插件
May 31 Javascript
动感效果的TAB选项卡jquery 插件
Jul 09 Javascript
node.js中的console用法总结
Dec 15 Javascript
javascript断点调试心得分享
Apr 23 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
JavaScript面试题(指针、帽子和女朋友)
Nov 23 Javascript
Jquery Easyui自定义下拉框组件使用详解(21)
Dec 31 Javascript
Vue2.0生命周期的理解
Aug 20 Javascript
如何在基于vue-cli的项目自定义打包环境
Nov 10 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
Sep 02 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处理斐波那契数列非递归方法
2012/02/04 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
JS控制图片等比例缩放的示例代码
2013/12/24 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
JavaScript多并发问题如何处理
2015/10/28 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
2016/01/28 Javascript
Angularjs 动态改变title标题(兼容ios)
2016/12/29 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
2018/02/22 Javascript
基于express中路由规则及获取请求参数的方法
2018/03/12 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
vue addRoutes路由动态加载操作
2020/08/04 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
Tensorflow分批量读取数据教程
2020/02/07 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
2020/03/14 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
财务管理专业自荐信范文
2013/12/24 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
宠物店的创业计划书范文
2014/01/11 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
婚前保证书
2014/04/29 职场文书
2014年小学校长工作总结
2014/12/08 职场文书
离婚协议书范本
2015/01/26 职场文书
千手观音观后感
2015/06/03 职场文书
实验室安全管理制度
2015/08/05 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang