webpack打包vue项目后,配置可以修改的配置文件

1.先安装generate-asset-webpack-plugin

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

注意:--save-dev(安装在devDependencies) 开发环境使用

         --save (安装在 dependencies生产环境使用

  

2.需要更改 build文件夹下的 webpack.dev.conf.js

 

const express = require('express')
const app = express()
var apiSetting = require('../src/assets/config/apiSetting.json') //你的配置文件路径
var apiRoutes = express.Router()
app.use('/serverconfig.json', apiRoutes)

devServer 下的

 

  devServer: {
   // 这是添加的配置项目
    before(app) {
      app.get('/serverconfig.json', (req, res) => {
        res.json(apiSetting)
      })
    }
  },

 

3.需要更改 build文件夹下的 webpack.prod.conf.js

//让打包的时候输出可配置的文件
var GenerateAssetPlugin = require('generate-asset-webpack-plugin');
var createServerConfig = function (compilation) {
  var apiSettings = require('../src/assets/config/apiSetting.json')
  return JSON.stringify(apiSettings);
}

 

plugins下的

  plugins: [
    //moment.js打包体积过大
   // new webpack.ContextReplacementPlugin(/moment[\\\/]locale$/, /^\.\/(zh-cn|en-gb)$/),
    //让打包的时候输入可配置的文件
    new GenerateAssetPlugin({
      filename: 'serverconfig.json',
      fn: (compilation, cb) => {
        cb(null, createServerConfig(compilation));
      },
      extraFiles: []
    }),
  ]

OptimizeCSSPlugin

 然后就配置好了  可以使用了

app.vue

import ApiSetting from "./modules/ApiSetting.js"; // apiSetting配置
import LocalStorage from "./modules/LocalStorage"; // localStorage
export default {
  name: "App",
  async beforeCreate() {
  // 判断是否登录,未登录的直接跳转到登录页面 
    var userInfo = LocalStorage.getObject("userInfo");
    if (!userInfo.userId && this.$route.fullPath != "/login/") {
      this.$router.push({
        path: `/login/`
      });
    }
  // 获取ApiSetting的配置
    await ApiSetting.config.get();
    this.configLoading = false;
  // 解决vuex 刷新数据丢失问题
    this.$store.dispatch("XXXX");
  },
  data() {
    return {
      configLoading: true
    };
  }
};

 modules下的ApiSetting.js

import axios from 'axios'
export default {
  config: {
    data: {},
    get() {
      return new Promise((resolve, reject) => {
        axios.get('serverconfig.json').then(res => {
          this.data = res.data;
          resolve(res.data)
        }).catch((error) => {
          throw error;
        });
      })
    }
  }
}

npm run build打包

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值