博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何做到在webpack打包vue项目后,在外部动态修改配置文件
阅读量:7012 次
发布时间:2019-06-28

本文共 2121 字,大约阅读时间需要 7 分钟。

在我们做完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文件里的配置文件。

转载于:https://www.cnblogs.com/linxing/p/9025881.html

你可能感兴趣的文章
SpringBoot(十八)@value、@Import、@ImportResource、@PropertySource
查看>>
[dubbo] Dubbo API 笔记——配置参考
查看>>
The last access date is not changed even after reading the file on Windows 7
查看>>
SQL Server 字符串处理函数
查看>>
恢复系统管理员密码的五大奇招
查看>>
英语形容“漂亮女孩”知多少
查看>>
GridView 获取当前行的索引值
查看>>
PHPCMS V9二次开发:内容模块PC标签调用详解
查看>>
tomcat发布web项目,支持域名
查看>>
js和Jquery获取选中select值和文本
查看>>
Linux系统排查1——内存篇
查看>>
Java实现注册邮箱激活验证
查看>>
数据库缓存
查看>>
mvc 数据验证金钱格式decimal格式验证
查看>>
常用的Web服务器
查看>>
UPW学习资料整理 .NET C# 转
查看>>
Oracle12c中新建用户
查看>>
分布式编译工具
查看>>
对我而言晦涩的递归
查看>>
React Native 从入门到原理
查看>>