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画线(实例代码)
Nov 20 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
Jul 27 Javascript
JavaScript设置、获取、清除单值和多值cookie的方法
Nov 17 Javascript
Yarn的安装与使用详细介绍
Oct 25 Javascript
jQuery中复合选择器简单用法示例
Mar 31 jQuery
vue基于mint-ui实现城市选择三级联动
Jun 30 Javascript
vue实现的组件兄弟间通信功能示例
Dec 04 Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 Javascript
JS实现动态倒计时功能(天数、时、分、秒)
Dec 12 Javascript
如何在微信小程序中存setStorage
Dec 13 Javascript
JavaScript实现好看的跟随彩色气泡效果
Feb 06 Javascript
微信小程序实现音频文件播放进度的实例代码
Mar 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
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
ImageFlow可鼠标控制图片滚动
2008/01/30 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
Angular 4.x+Ionic3踩坑之Ionic3.x pop反向传值详解
2018/03/13 Javascript
nodejs初始化init的示例代码
2018/10/10 NodeJs
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
Vue路由模块化配置的完整步骤
2019/08/14 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
python通过opencv实现批量剪切图片
2017/11/13 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
Django app配置多个数据库代码实例
2019/12/17 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
pandas 数据类型转换的实现
2020/12/29 Python
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
米兰必去买手店排行榜首位:Antonioli
2016/09/11 全球购物
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
信用社竞聘演讲稿
2014/05/16 职场文书
道德与公民自我评价
2015/03/09 职场文书
上诉答辩状范文
2015/05/22 职场文书
入党宣誓仪式主持词
2015/06/29 职场文书
PO模式在selenium自动化测试框架的优势
2022/03/20 Python
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript