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 相关文章推荐
Extjs TriggerField在弹出窗口显示不出问题的解决方法
Jan 08 Javascript
JavaScript DOM学习第六章 表单实例
Feb 19 Javascript
滚动图片效果 jquery实现回旋滚动效果
Jan 08 Javascript
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
js验证框架实现代码分享
May 18 Javascript
详细讲解JavaScript中的this绑定
Oct 10 Javascript
JavaScript之Vue.js【入门基础】
Dec 06 Javascript
JavaScript中严格判断NaN的方法
Feb 16 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
JS Thunk 函数的含义和用法实例总结
Apr 08 Javascript
JavaScript设计模式--桥梁模式引入操作实例分析
May 23 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
Zend studio文件注释模板设置方法
2013/09/29 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
2014/11/03 PHP
php遍历CSV类实例
2015/04/14 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
PHP实现获取文件mime类型多种方法解析
2020/05/28 PHP
jQuery 源代码显示控件 (Ajax加载方式).
2009/05/18 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
2011/03/20 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
理解nodejs的stream和pipe机制的原理和实现
2017/08/12 NodeJs
javascript中的event loop事件循环详解
2018/12/14 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue2.0 watch里面的 deep和immediate用法说明
2020/10/30 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
让python 3支持mysqldb的解决方法
2017/02/14 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
python能做什么 python的含义
2019/10/12 Python
将python安装信息加入注册表的示例
2019/11/20 Python
django创建css文件夹的具体方法
2020/07/31 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
Pycharm github配置实现过程图解
2020/10/13 Python
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
学生周末回家住宿长期请假条
2014/02/15 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
中文专业求职信
2014/06/20 职场文书
员工生日活动方案
2014/08/24 职场文书
安全员岗位职责范本
2015/04/11 职场文书
在职证明书模板
2015/06/15 职场文书
2015年公路路政个人工作总结
2015/07/24 职场文书
公司开业的祝贺语大全(60条)
2019/07/05 职场文书