webpack学习---解析项目中使用的webpac配置

一、文件目录:

二、webpack.config.js

// 随着项目需求的增长,我们必须要找到更有效地管理配置文件的方法。
// 分离配置文件:
// webpack.base.config.js 公共环境的配置文件
// webpack.dev.config.js 开发环境下的配置文件
// webpack.prod.config.js 生产环境下的配置文件

const merge = require('webpack-merge');
// webpack-merge: 如果配置文件被分成了许多不同的部分,那么必须以某种方式来组合他们,
// 通常就是合并数组和对象,webpack-merge就是用来合并配置文件的

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
// webpack Bundle Analyzer是一个可视化的工具,能够分析和生成打包输出后文件大小互动缩放树形图。

const devConfig = require('./build/webpack.dev.config.js'); // 开发环境下的配置文件
const prodConfig = require('./build/webpack.prod.config.js'); // 生产环境下的配置文件

const ip = require('ip').address();
// 获取局域网IP
const portFinder = require('portfinder');
// 获取port
const isDev = process.env.NODE_ENV === 'development';
const devWebpackConfig = merge(devConfig,
  {
    devServer: {
      host: ip, // 指定使用一个 host。默认是 localhost
      proxy: {
        '/api': {
          target: 'http://192.168.2.90:8080',
          changeOrigin: true,
          pathRewrite: { // 不传递/api
            '^/api': ''
          }
        }
      }
    }
  }
);
if (isDev) {
  module.exports = new Promise((resolve, reject) => {
    portFinder.getPort({ port: 9000, stopPort: 9999 }, function (err, port) {
      if (err) {
        reject(err);
      } else {
        devWebpackConfig.devServer.port = port;
        resolve(devWebpackConfig);
      }
    });
  });
} else {
  if (process.env.BUILD_REPORT) {
    module.exports = merge(prodConfig, {
      plugins: [
        new BundleAnalyzerPlugin()
      ]
    })
  } else {
    module.exports = prodConfig;
  }
}

二、webpack.base.config.js

const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
 //打包后自动生成ind
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值