webpack + vue 打包生成公共配置文件(域名) 方便动态修改,不用重复打包

需求:

        原来的项目中域名是打包到项目里面的,打包后不能动态配置,只能通过不同的指令打包来切换域名,每天都在测试域名和正式域名来回摩擦,后台大佬说你们可以生成一个配置文件这样就不用频繁打包了直接修改配置文件就好.

方法一:

        vue中有一个存放外部资源的文件夹static,它里面的文件是不会被打包编译的,所以我们就可以利用外部引入js的方式将我们的想要的数据在index.html中以js文件的方式引入,然后就可以全局使用。

        此方法亲测有效!!!!

1、在项目中找到static文件夹,在里面创建一个配置文件,起名为config.js

┌── build 
├── config 
├── node_modules                    
├── src     
├── static  
│   ├── config.js  // 配置文件
│               
├── index.html: 

2、然后在创建的config.js配置文件中,声明一个全局Windows对象Glob

/**
 * vue 打包生成配置文件,方便外部修改公共路径,不用每次都进行打包部署
 */
window.Glob = {
    BaseUrl:'http://39.99.202.195'
}

3、将此配置文件在index.html 文件中引入(注意:引用的路径)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>效果测试平台</title>
    <script type="text/javascript" src="./static/config.js"></script>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

路径为:./static/config.js;千万不要忘记 点 ;否则会报错!!

4、axios 配置文件




import axios from 'axios' 
....
let baseURL
// 判断开发环境(一般用于本地代理)
if (process.env.NODE_ENV === 'development') {      // 开发环境
    baseURL = '/api'
} else {                                           // 编译环境
    if (process.env.type === 'test') { // 测试环境
        baseURL = window.Glob.BaseUrl  // 在这里使用配置文件中的域名
    } else {   // 正式环境                               
        baseURL = window.Glob.BaseUrl  // 在这里使用配置文件中的域名 
    }
}

到此,项目的配置文件就已经设置好了。

 

方法二:

         使用插件 generate-asset-webpack-plugin

1、安装插件

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

2、在项目的根目录下新建 serverConfig.json 以后会根据这个文件去生成打包的配置文件

{"ProdUrl":"http://text.com"}

3、在build/webpack.prod.conf.js中添加generate-asset-webpack-plugin

 const GenerateAssetPlugin = require('generate-asset-webpack-plugin');
 const serverConfig = require('../serverConfig.json');//引入根目录下的配置文件
const createJson = function() {
  return JSON.stringify(serverConfig);
};
//plugins 中使用
  plugins: [
	    //打包时生成一个配置文件
	    new GenerateAssetPlugin({
	      filename: 'serverConfig.json',
	      fn: (compilation, cb) => {
	          cb(null, createJson());
	      },
	  }),
	]

4、使用http.js文件(这是我项目的配置文件,里面包含axios请求拦截等)

import axios from 'axios';
axios.defaults.timeout = 300000;
if (process.env.NODE_ENV == 'development') {
    axios.defaults.baseURL = 'http://192.168.1.1:8080/'
}else if(process.env.NODE_ENV == 'production'){
    axios.get('serverconfig.json').then(res=>{
        if(res.data.baseUrl){
            axios.defaults.baseURL = res.data.baseUrl
        }else{
            axios.defaults.baseURL = 'http://192.168.1.1:8080/'
        }
    })
}

5、打包之后,在根目录就会生成serverconfig.json文件

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具,可以将多个模块打包成一个或多个静态资源文件。Vue 是一个流行的 JavaScript 框架,用于构建用户界面。 在将 Vue 项目打包时,可以使用 Webpack生成公共配置文件,以便在不同的环境中共享和重复使用。 首先,可以创建一个名为 `webpack.base.config.js` 的公共配置文件。该文件会包含一些通用的配置,例如入口文件、输出路径、加载器、插件等。通常,会将所有环境共有的配置项放在这个文件中。例如: ```javascript module.exports = { entry: './src/main.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js', }, module: { rules: [ { test: /\.vue$/, loader: 'vue-loader', }, // 其他加载器规则... ], }, plugins: [ new VueLoaderPlugin(), // 其他插件... ], }; ``` 然后,在不同的环境配置文件(如 `webpack.dev.config.js`、`webpack.prod.config.js` 等)中,可以通过引入公共配置文件并进行合并来继承公共配置。例如: ```javascript const merge = require('webpack-merge'); const baseConfig = require('./webpack.base.config.js'); module.exports = merge(baseConfig, { // 为开发环境或生产环境添加额外的配置项 }); ``` 这样,可以在不同的环境中共享公共配置,减少重复工作,并且方便管理和维护项目。 最后,可以使用命令行或配置文件来指定要使用的环境配置文件,以便在打包时根据不同的环境生成不同的配置。 通过使用 Webpack 生成公共配置文件,可以更好地组织和管理 Vue 项目的打包配置,提高开发效率,并且方便进行项目的扩展和维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值