如何做到在webpack打包vue项目后,在外部动态修改配置文件
在我们做完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项目后,在外部动态修改配置文件的更多相关文章
- 16.如何做到webpack打包vue项目后,可以修改配置文件
问题描述: 前端需要修改restful API的url,但是打包之后,配置文件找不到了,如果在npm run build 生成dist后,这个配置也被写死了,传到运行的前端服务器上后,假设某次,api ...
- 解决webpack打包vue项目后,部署完成后,刷新页面页面404
1.url不动式url完全不动,即你的页面怎么改变,怎么跳转url都不会改变.这种情况的原理 就是纯ajax拿到页面后替换原页面中的元素,刷新页面就是首页 2.带hash(#)式这种相对于第一种的话刷 ...
- webpack打包vue项目之后生成的dist文件该怎么启动运行
亲测,webpack打包vue项目之后生成的dist文件可以部署到 express 服务器上运行. 我的vue项目结构如下: 1. 进入该vue项目目录,打开git bash,执行:npm run b ...
- vue项目--favicon设置以及动态修改favicon
最近写公司项目时,动态更新favicon 动态更新之前需要有一个默认的favicon. 目前vue-cli搭建的vue项目里面已经有了一个static文件夹,存放静态文件. favicon图片放到该文 ...
- webpack打包vue项目,资源路径如何从绝对路径改为相对路径?css中的图片资源如何修改配置?
资源相对引用路径 问题描述 一般情况下,通过webpack+vuecli默认打包的css.js等资源,路径都是绝对的. 但当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static ...
- webpack打包vue项目之后怎么启动&注意事项
参考路径:https://blog.csdn.net/cn_yaojin/article/details/80164477 参考路径:https://www.imooc.com/article/323 ...
- 教你用Cordova打包Vue项目
现在国内越来越多的开发者使用Vue开发混合app,但是当大家开发完成过后才发现不知道该怎么将Vue项目打包成app. 据我现在的了解打包Vue项目目前流行的就是使用weex和cordova.weex是 ...
- webpack打包vue单文件组件
一.vue单文件组件 ①文件扩展名为 .vue 的 就是single-file components(单文件组件) ②参考文档:单文件组件 二.webpack加载第三方包 ①项目中,如果需要用到一些第 ...
- electron打包vue项目
electron是什么 Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库. Electron通过将Chromium和Node.js合并 ...
随机推荐
- Python开发【1.4数据类型】
1.数字 数字数据类型用于存储数值. 他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象. # 创建对象 var1 = 1 var2 = 2 # 删除对象 del var1 del ...
- Swift 1.1语言第7章 函数和闭包
Swift 1.1语言第7章 函数和闭包 在编程中,随着处理问题的越来越复杂.代码量飞速添加. 当中,大量的代码往往相互反复或者近似反复.假设不採有效方式加以解决.代码将非常难维护. 为了解决问题, ...
- 使用Zabbix监控ZooKeeper服务的健康状态
一 应用场景描述 在目前公司的业务中,没有太多使用ZooKeeper作为协同服务的场景.但是我们将使用Codis作为Redis的集群部署方案,Codis依赖ZooKeeper来存储配置信息.所以做好Z ...
- SepicalJudge
原文:http://www.cnblogs.com/chouti/p/5752819.html Special Judge:当正确的输出结果不唯一的时候需要的自定义校验器 首先有个框架 #includ ...
- FreeMarker:模板开发指南
ylbtech-FreeMarker:模板开发指南 1.返回顶部 1. Section Contents 入门 模板 + 数据模型 = 输出 数据模型一览 模板一览 数值,类型 基本内容 类型 模板 ...
- C的结构体函数
#include<stdio.h> #include<string.h> struct Test { int age; ]; double score; }std1; //结构 ...
- bzoj3339
线段树+离线 这种题既可以用莫队做也可以用线段树做,跟hh的项链差不多 首先我们处里出前缀mex,也就是1->i的mex值,再预处理出每个数下一次出现的位置,然后把每个前缀mex插入线段树,每个 ...
- J20170604-hm
丸める 四舍五入 文字化け 乱码 わきまえる 弁える 辨别,识相 御構い 张罗,招待,款待 お構いなしに 不加考虑 しおり ブックマーク 书签 スタイルシート 样式表
- linux下导入oracle数据表
提前说明:这个是默认oracle已经安装好切数据库默认表空间已经创建好.之后将数据表dmp文件直接导入到默认表空间里(默认表空间不用再指定,因为创建数据库时已经指定默认表空间) linux命令如下: ...
- bzoj 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛【二分+贪心】
二分答案,贪心判定 #include<iostream> #include<cstdio> #include<algorithm> using namespace ...