基于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 相关文章推荐
JS模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
改进版通过Json对象实现深复制的方法
Oct 24 Javascript
使用纯javascript实现放大镜效果
Mar 18 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
ES6中Symbol类型用法实例详解
Apr 06 Javascript
vue.js框架实现表单排序和分页效果
Aug 09 Javascript
Vue实现动态创建和删除数据的方法
Mar 17 Javascript
使用puppeteer爬取网站并抓出404无效链接
Dec 20 Javascript
layui表格数据重载
Jul 27 Javascript
vue.js iview打包上线后字体图标不显示解决办法
Jan 20 Javascript
Vue中用JSON实现刷新界面不影响倒计时
Oct 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
js实现图片放大缩小功能后进行复杂排序的方法
2012/11/08 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
bootstrap学习笔记之初识bootstrap
2016/06/21 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
Java与JavaScript中判断两字符串是否相等的区别
2017/03/13 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
微信小程序实现翻牌抽奖动画
2020/09/21 Javascript
Python程序员鲜为人知但你应该知道的17个问题
2014/06/04 Python
Python解析xml中dom元素的方法
2015/03/12 Python
解析Python中while true的使用
2015/10/13 Python
浅谈Python2、Python3相对路径、绝对路径导入方法
2018/06/22 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
在Python中使用MongoEngine操作数据库教程实例
2019/12/03 Python
Python绘制动态水球图过程详解
2020/06/03 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
教师实习期自我鉴定
2013/10/06 职场文书
师范应届生教师求职信
2013/11/05 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
如何写自我鉴定
2014/03/19 职场文书
2015国庆节感想
2015/08/04 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB
vue打包时去掉所有的console.log
2022/04/10 Vue.js