如何做到vue-cli打包项目后,可以修改配置文件

问题:

前端需要修改后台服务器地址url,写好的配置文件会在npm run build 后压缩在一起,传到运行的前端服务器上后,需要到前端打包的源码,找到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

第二:在build/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);
}

让打包的时候输入可配置的文件名,将会输出一个名为serverconfig.json的文件。

plugins: [
    new GenerateAssetPlugin({
        filename: 'serverconfig.json',
        fn: (compilation, cb) => {
            cb(null, createServerConfig(compilation));
        },
        extraFiles: []
    })
    ......
]

第三:在需要获取配置文件内容的地方编写以下代码;
用cookie存储起来,方便其他地方获取。

axios.get("serverconfig.json").then((result)=>{
    Vue.prototype.$cookieStore.setCookie("ApiUrl", result.data.ApiUrl, 30*24*60*60*100);
    console.log(result.data.ApiUrl,'123');
}).catch((error)=>{console.log(error)});

这样上传到服务器,随时都可以更改serverconfig.json文件里面的内容了。

上一篇:传的参数是url地址时需要特殊处理


下一篇:22. Generate Parentheses dfs填表