如何做到在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文件里的配置文件。

原文地址:https://www.cnblogs.com/linxing/p/9025881.html

时间: 2024-11-10 10:05:41

如何做到在webpack打包vue项目后,在外部动态修改配置文件的相关文章

16.如何做到webpack打包vue项目后,可以修改配置文件

问题描述: 前端需要修改restful API的url,但是打包之后,配置文件找不到了,如果在npm run build 生成dist后,这个配置也被写死了,传到运行的前端服务器上后,假设某次,api服务器的ip修改了,改动只是更新下这个url,但是却需要会到前端源码,url后,在重新npm run build,然后再把整个dist再重新传到前端服务器,才可以. 解决方法: 用了generate-asset-webpack-plugin 这个插件,在webpack.prod.conf.js中去生

解决webpack打包vue项目后,部署完成后,刷新页面页面404

1.url不动式url完全不动,即你的页面怎么改变,怎么跳转url都不会改变.这种情况的原理 就是纯ajax拿到页面后替换原页面中的元素,刷新页面就是首页 2.带hash(#)式这种相对于第一种的话刷新页面页面不会丢失    实现原理写一个window事件我监听url的变化,那我就能实先路由,那样我就可以根据url的变化,来通过ajax请求参数来渲染页面,一个url对应一个页面,就不会重复.window.addEventListener(‘hashchange‘,function(){self.

webpack构建Vue项目引入jQ时发生“'$' is defined but never used”的处理

今天公司需要新建个数据后台,就按照查到的方法构建了Vue框架的项目,引入jQ.bootstrap时,按照在线方法配置,发现 main.js 里的引用jQ一直显示红标,没多想,在按照网上配置完后,npm run dev运行,就抛出这么个错误,百思不得解 错误如下: '$' is defined but never used 1 http://eslint.org/docs/rules/space-before-function-paren 1 http://eslint.org/docs/rule

用Webpack构建Vue项目

开始之前,需要安装node环境.(安装过程在此就不啰嗦了) 1.创建基本结构 首先我们要创建一个空文件夹(我这里叫todos,你可以随便命名)作为项目的根目录. 创建一个没有任何依赖关系的package.json,可以通过命令行 npm init 创建. 配置下基本信息即可. 创建一个index.html文件,这个是显示在浏览器中的页面. 注意: 1.这里的暂时并不存在: 2.的数据会被vue文件填入. 创建一个src文件夹,并在文件夹内新建一个main.js文件: 这样我们就完成了一个关于vu

webpack构建vue项目(配置篇)

最近公司要求用vue重构项目,还涉及到模块化开发,于是乎,我专门花了几天的时间研究了一下webpack这个目前来看比较热门的模块加载兼打包工具,发现上手并不是很容易,现将总结的一些有关配置的心得分享出来,欢迎大神来拍砖... 一.新建一个项目目录,cd /d 定位进去,然后输入npm init,会提示你填写一些项目的信息,一直回车默认就好了,或者直接执行npm init -y 直接跳过,这样就在项目目录下生成了一个package.json文件. 二.接下来就是通过npm安装项目依赖项,命令行输入

使用webpack搭建vue项目

有一句话叫"前人栽树后人乘凉",还有一句话叫"如果说我看得比别人更远些,那是因为我站在巨人的肩膀上".前一句是国人的俗语,后一句是那个发现了"万有引力"定律的牛顿说的.为什么要引用这两句呢?是因为我刚开始用vue的时候,使用的是vue-cli来搭建vue项目,快速又好用:我刚开始用react的时候,使用的是create-react-app来搭建react项目,方便又省事.使用这些已有的脚手架来搭建项目,无可厚非,对于新手来说,也确实能快速构建,不

vue-cli+webpack构建vue项目和使用sass报错填坑

一.安装 vue-cli 1.首先需要安装node和npm 不做过多讲解,可以参考 https://www.cnblogs.com/kellyPan/p/9653609.html 安装 2.使用npm安装npm-cli 打开要建项目所在的文件夹,点击空白处按住 shift + 鼠标右键,打开 Powershell窗口进行接下来的操作 因为在指定文件夹打开,因此不用再选择路径,可直接输入命令, 输入命令安装npm -cli:npm install --global vue-cli 二.生成项目模板

利用webpack构建vue项目

快速搭建vue项目 一,确认自己有无搭建好node以及npm环境,这些是前提,具体安装方法可参考https://nodejs.org/en/. 二,开始构建项目. 第1步:新建一个文件夹,随意命名. 第2步:通过vue-cli来构建项目,vue-cli是vue的脚手架工具,可通过命令行: npm install -g vue-cli 来进行安装.vue-cli只用安装一次,以后可以不用再安装. 第3步:在安装完vue-cli之后,找到自己新建的文件夹,并在这里打开命令提示符cmd.可以通过按住s

如何使用webpack打包前端项目

webpack概述 随着前端体积越来越大,功能越来越丰富,这时候就需要将前端工程化,而 webpack就是用于将前端各种文件打包起来. 一个简单的webpack应该包含以下几个概念 · 入口起点 · 输出 · 配置 · 组件 · 加载器 · 插件 · 模块 · 模块热替换 下面我们一步步的搭建webpack,逐步讲解上诉模块 开发环境 推荐使用JetBrain的Webstorm,有强大的代码提示,支持JSX和ES6语法: 我们将会使用npm来下载和构建依赖,现在网上也有很多人使用yarn来安装,