1. 程式人生 > >如何做到在webpack打包vue項目後,在外部動態修改配置文件

如何做到在webpack打包vue項目後,在外部動態修改配置文件

打包 測試 contex 我們 pro nbsp assets bpa gen

在我們做完vue項目後,只需要執行 npm run dist 就可以輕松進行打包轉測試,可是如果我們臨時需要修改一些配置文件比如域名,這時候我們就有點懵逼了,那就修改了再重新打一次包? NO NO NO,讓我們一起來探索如何解決這個問題吧。

首先我們需要借助一個插件 generate-asset-webpack-plugin

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

其次在build文件夾下建立一個generate-asset.config.js文件

const GenerateAssetPlugin = require(‘generate-asset-webpack-plugin‘);
const config 
= require(‘../config/app-config‘); function createServerConfig(compilation){ return JSON.stringify( Object.assign({ _hash: compilation.hash },config) ) } module.exports = () =>{ return new GenerateAssetPlugin({ filename: ‘config/app-config.json‘, fn: (compilation, cb)
=> { cb(null, createServerConfig(compilation)); } }) }

在config文件夾下建立一個app.config.js文件導出配置選項

module.exports={
    env:"dev",
    baseUrl:"http://www.baidu.com"
}

在webpack.base.conf.js文件中引入generateAssetAppConfig

let webpackConfig = {
  context: path.resolve(__dirname, ‘../‘),
  entry: {
    app: 
‘./src/main.js‘ }, plugins:[ generateAssetAppConfig(packageConfig) ], output: { path: config.build.assetsRoot, filename: ‘[name].js‘, publicPath: process.env.NODE_ENV === ‘production‘ ? config.build.assetsPublicPath : config.dev.assetsPublicPath }, resolve: { extensions: [‘.js‘, ‘.vue‘, ‘.json‘], alias: { ‘vue$‘: ‘vue/dist/vue.esm.js‘, ‘@‘: resolve(‘src‘), } },

寫一個請求外部app-config.json文件的方法

let get= function(url){
    return new Promise((resolve,reject)=>{
        let xhr= new XMLHttpRequest();
        xhr.open(‘get‘,url,true);
        xhr.onload=function(){
            if(xhr.status==200){
                resolve(JSON.parse(xhr.responseText));
            }else{
                reject(null);
            }
        }
        xhr.onerror = function(){
            reject(null);
        }
        xhr.send(null);
    });
}

export default{
    getConfig(){
        return get(‘/config/app-config.json‘);
    }
}

在main.js中引入請求的方法

outConfig.getConfig()
    .then(res=>{
    Object.assign(config,res)
}).catch(err=>{})

最後執行 npm run dist後可以得到如下目錄

技術分享圖片

最後可以修改config中json文件裏的配置文件。

如何做到在webpack打包vue項目後,在外部動態修改配置文件