基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法


Posted in Javascript onDecember 09, 2018

背景

•基于Vue-cli 项目产品部署,涉及到的交互的地址等配置信息,每次都要重新打包才能生效,极大的降低了效率。我们的目的是让项目实施的小伙伴重新快乐起来。网上实现的方式,都是半自动化的,还需要重新修改。

需求点

•配置化:打包后的配置文件可二次修改
•配置自动生成:vue-cli 提供了各种环境的打包,要实现相关配置文件的自动打包
•研发人员无痛感:对于产品研发人员来说,不需要增加额外的打包成本,基于Vue-cli的开发习惯不变。

实现步骤

一:配置自动生成

•安装generate-asset-webpack-plugin插件。用于配置文件自动生成。

npm install --save-dev generate-asset-webpack-plugin

•配置webpack.prod.conf.js文件.新增如下代码

// 这段代码在配置文件开头
var GenerateAssetPlugin = require('generate-asset-webpack-plugin'); //Add:Strony;Date:2018年12月7日
const env = require('../config/' + process.env.env_config + '.env')
// 打包后配置文件:新增 2018年12月7日;Strony
var createServerConfig = function (compilation) {
 //Step1:先复制原对象
 var parseEnv = Object.assign({ _hash: compilation.hash}, env)
 //Step2:去除配置文件中的引号
 Object.keys(parseEnv).forEach(function (key) {
  parseEnv[key] = parseEnv[key].replace(/"/g, "");
 });
 return JSON.stringify(parseEnv, null, 2);
}
// 这段代码加在plugins:[]中
 new GenerateAssetPlugin({
   filename: utils.assetsPath('../static/serverConfig.json'),
   fn: (compilation, cb) => {
    cb(null, createServerConfig(compilation));
   },
   extraFiles: []
  })

•输入npm run build:prod 打包命令.vue-cli 默认提供了几个环境的打包环境:早期版本直接:npm run build

基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法

结果如下:

基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法

•生成的配置文件样式如下:

{
 "_hash": "52f44b45b5b600b7f36e",
 "NODE_ENV": "production",
 "ENV_CONFIG": "sit",
 "BASE_API": "http://*****/APIPlateForm/",
 "BASE_ADDR": "http://****/",
 "REPORT_ADDR": "******"
}

二:全局变量从配置文件读取

1.增加serverConfig.json。目的是开发人员本地开发时候,可以从配置文件读取。内容Copy本地的dev.env.js.住里面的格式为json,去除多余的引号。

基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法

2.在main.js中添加下面的代码。目的:读取配置地址挂载在全局对象

import axios from 'axios'
/* eslint-disable no-new */
// 请求文件内容
function getServerConfig() {
 return new Promise((resolve, reject) => {
  axios.get('./static/serverConfig.json').then(result => {
   console.log(result)
   const config = result.data;
   for (const key in config) {
    Vue.prototype[key] = config[key];
   }
   resolve();
  })
 })
}
// 请求文件内容及创建实例
async function main() {
 await getServerConfig();
 console.log('我的地址是' + Vue.prototype.BASE_API)
 axios.defaults.baseURL = Vue.prototype.BASE_API;//axios 的基础地址从配置文件读取
 new Vue({
  el: '#app',
  router,
  store,
  template: '<App/>',
  components: { App }
 })
}
// 方法初始执行
main();

3.项目执行:npm run dev。在浏览器的控制台下可以查看到相关的配置信息

基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法

4.使用方法:在vue文件中,直接访问使用各类地址信息。

handleWatchLib(linurl) {
    window.open(this.BASE_ADDR + linurl);
    return false;
   }

总结

以上所述是小编给大家介绍的基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript 获取LI里的内容
Dec 17 Javascript
JQuery在光标位置插入内容的实现代码
Jun 18 Javascript
发布一个基于javascript的动画类 Fx.js
Nov 05 Javascript
jQuery中绑定事件的命名空间详解
Apr 05 Javascript
用Juery网页选项卡实现代码
Jun 13 Javascript
js控制web打印(局部打印)方法整理
May 29 Javascript
jquery实现点击弹出层效果的简单实例
Mar 03 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
Feb 08 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 Javascript
vuex(vue状态管理)的特殊应用案例分享
Mar 03 Javascript
js实现弹窗猜数字游戏
Nov 26 Javascript
JS数组去重的6种方法完整实例
Dec 08 #Javascript
原生JS实现的放大镜特效示例【测试可用】
Dec 08 #Javascript
JS实现的小火箭发射动画效果示例
Dec 08 #Javascript
jQuery时间戳和日期相互转换操作示例
Dec 07 #jQuery
ES6的Fetch异步请求的实现方法
Dec 07 #Javascript
JavaScript this绑定过程深入详解
Dec 07 #Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 #Javascript
You might like
摩卡咖啡
2021/03/03 咖啡文化
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
PHP $O00OO0=urldecode &amp; eval 解密,记一次商业源码的去后门
2020/09/13 PHP
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
判断滚动条滑到底部触发事件(实例讲解)
2017/11/15 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
在Linux命令行终端中使用python的简单方法(推荐)
2017/01/23 Python
Python3用tkinter和PIL实现看图工具
2018/06/21 Python
Python异常的检测和处理方法
2018/10/26 Python
python内置函数sorted()用法深入分析
2019/10/08 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
Python守护进程实现过程详解
2020/02/10 Python
Python 没有main函数的原因
2020/07/10 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
CSS3 边框效果
2019/11/04 HTML / CSS
小学教师的自我评价范例
2013/10/31 职场文书
超市业务员岗位职责
2013/12/05 职场文书
物业工作计划书
2014/01/10 职场文书
三好学生个人先进事迹材料
2014/05/17 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
2015新学期开学寄语
2015/02/26 职场文书
综合素质评价自我评价
2015/03/06 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
亲情作文之母爱
2019/09/25 职场文书
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP