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获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
javascript中简单的进制转换代码实例
Oct 26 Javascript
JavaScript的arguments对象应用示例
Sep 15 Javascript
js实现适用于素材网站的黑色多级菜单导航条效果
Aug 24 Javascript
jQuery对html元素的取值与赋值实例详解
Dec 18 Javascript
Javascript打印局部页面实例
Jun 21 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
Dec 01 Javascript
基于jquery的on和click的区别详解
Jan 15 jQuery
JavaScript实现百度搜索框效果
Mar 26 Javascript
微信小程序Getuserinfo解决方案图解
Aug 24 Javascript
小程序自定义单页面、全局导航栏的实现代码
Mar 15 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数字格式化
2006/12/06 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
2012/09/25 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
2016/10/28 PHP
jQuery基础知识filter()和find()实例说明
2010/07/06 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
非jQuery实现照片散落桌子上,单击放大的LightBox效果
2014/11/28 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
jquery延迟对象解析
2016/10/26 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
Python程序设计入门(2)变量类型简介
2014/06/16 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
Python基础之循环语句用法示例【for、while循环】
2019/03/23 Python
Python编程快速上手——Excel表格创建乘法表案例分析
2020/02/28 Python
详解python 支持向量机(SVM)算法
2020/09/18 Python
使用HTML和CSS3绘制基本卡通图案的示例分享
2015/11/06 HTML / CSS
Merchant 1948澳大利亚:新西兰领先的鞋类和靴子供应商
2018/03/24 全球购物
购买正版游戏和游戏激活码:Green Man Gaming
2019/11/06 全球购物
教师反腐倡廉演讲稿
2014/09/03 职场文书
婚前协议书标准版
2014/10/19 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
新郎接新娘保证书
2015/05/08 职场文书
三八节祝酒词
2015/08/11 职场文书
React更新渲染原理深入分析
2022/12/24 Javascript