16.如何做到webpack打包vue项目后,可以修改配置文件
2024-08-30 14:36:42
问题描述:
前端需要修改restful API的url,但是打包之后,配置文件找不到了,如果在npm run build 生成dist后,这个配置也被写死了,传到运行的前端服务器上后,假设某次,api服务器的ip修改了,改动只是更新下这个url,但是却需要会到前端源码,url后,在重新npm run build,然后再把整个dist再重新传到前端服务器,才可以。
解决方法:
用了generate-asset-webpack-plugin 这个插件,在webpack.prod.conf.js中去生成configServer.json文件,让其在build的时候生成json文件,然后再使用axios异步获取json,替换url即可
具体做法:
先安装generate-asset-webpack-plugin插件
npm install --save-dev generate-asset-webpack-plugin
在webpack.prod.conf.js里面配置
//让打包的时候输出可配置的文件
var GenerateAssetPlugin = require('generate-asset-webpack-plugin');
var createServerConfig = function(compilation){
let cfgJson={ApiUrl:"http://139.129.31.108:8001"};
return JSON.stringify(cfgJson);
}
//让打包的时候输入可配置的文件
new GenerateAssetPlugin({
filename: 'serverconfig.json',
fn: (compilation, cb) => {
cb(null, createServerConfig(compilation));
},
extraFiles: []
})
打包之后,在根目录就会生成serverconfig.json文件
使用:
axios.get("serverconfig.json").then((result)=>{
localStorage.setItem('ApiUrl',result.data.ApiUrl);
console.log(localStorage.getItem('ApiUrl'));
}).catch((error)=>{console.log(error)});
则可以获取到serverconfig.json里面的key ApiUrl的值,需要注意的是,由于是异步操作,为了通信,可以采用localstorage,把东西存起来,即localstorage.setItem
使用的时候可以用localstorage.getItem
最新文章
- [ES] 基础概念
- Network Experiment Environment Construction
- Valgrind 3.11.0编译安装
- 如何将扩展名为.backup的文件导入postgresql中 求步骤 新手 谢谢.
- MNIST手写数字数据库
- phpmyadmin导入导出大数据文件的办法
- devexpress中ASPxGridView控件初始化赋值
- Android Metro风格的Launcher开发系列第二篇
- python遗传算法实现数据拟合
- angular ng-repeat数组中的数组
- Class path &; Path
- 静态,关键字:static 接口,IUSB , API 接口关键字:interface
- Java面试基础知识(2)
- Java Object Clone
- listView 一个 item更新
- iso网络模型
- 4 进程间通信Queue [kjuː]
- C++学习之路(四):线程安全的单例模式
- java maven项目 导入jar包注意
- ASP.net之HttpModel