vue配置外放generate-asset-webpack-plugin


解決方法:(共有2個方法)

1、借助插件  generate-asset-webpack-plugin 。在webpack.prod.conf.js中去生成configServer.json文件,讓其在build的時候生成json文件,然后再使用axios異步獲取json,替換url即可。

第一步:安裝插架

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

第二步:配置 webpack.prod.config.js 文件

·讓其打包的時候輸出可配置的文件。


var GenerateAssetPlugin = require(‘generate-asset-webpack-plugin‘);
var createServerConfig = function(compilation){
let cfgJson={ApiUrl:"http://www.adoctors.cn"};
return JSON.stringify(cfgJson);
}
讓其打包的時候輸入可配置文件

new GenerateAssetPlugin({
filename: 'serverconfig.json',
fn: (compilation, cb) => {
cb(null, createServerConfig(compilation));
},
extraFiles: []
})
在我們輸入 npm run build 打包之后,在根目錄就會生成serverconfig.json文件。

 

 

第三步:如果有需要修改域名之類的  可在 serverConfig.json 修改

 

 

 

第四步:獲取 ApiUrl

//在main.js中定義一個全局函數
Vue.prototype.getConfigJson=function(){
this.$http.get("serverconfig.json").then((result)=>{
//用一個全局字段保存ApiUrl 也可以用sessionStorage存儲
Vue.prototype.ApiUrl=result.body.ApiUrl;
}).catch((error)=>{console.log(error)});
}
 

第五步:使用ApiUrl

//在app.vue里面 執行this.getConfigJson();
mounted:function(){
this.getConfigJson();
}
var url=this.ApiUrl+'/baidu/....
ApiUrl 在這里已經是全局的了 所以我們可以直接用 this.ApiUrl

 

 

2、第二個方法

此方法其實就是在 vue-cli 里把我們需要配置修改的文件直接進行抽離,不讓 webpack 把配置文件進行編譯。

 

第一步:在 static  文件夾下新建一個名為 config.js 的文件

 

 

接下來 就是配置 config 的內容啦

這里將所有的配置注入到window對象的一個屬性里面,我們可以自定義這個屬性

 

 

 

第二步:在index.html里面引入這個config.js

 

 

 

第三步:我們配置好之后就可直接調用

 

 

 

 

在我們打包之后 可以看到 config 文件會原樣輸出並沒有被打包。 這樣當我我們把項目交給部署人員的時候,部署人員可以直接通過該文件來修改配置內容啦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM