Antd React UMI 配置优化 - 优化打包体积,提高打包速度

news2024/11/20 8:28:14

随着项目越来越大,打包后的体积很大,打包时间也很长,部署一次基本上要等十分钟左右。那么如何来优化打包体积和提高打包速度呢?一起来看看吧~


优化前打包体积分析

优化前个模块体积:

通过脚本命令:npm run analyze

可以看到总的parsed打包体积为 27.92MB, gizped 后也有 8.07MB。 再看每个chunk,可以发现有很多公共的模块出现在多个chunk里面,找到了问题所在

配置优化

现在我们通过webpackPlugin 里的config.merge,把那些公共的依赖单独打包到一起即可。比如:antdesigns框架里的antv、antd、ant-design;还有react、lodash、moment、postcss等。

plugin.ts 文件

// config/plugin.ts
console.log('Running...')
const webpackPlugin = (config: any) => {
    config.merge({
      optimization: {
        minimize: true,
        splitChunks: {
          chunks: 'async',
          minSize: 30000,
          minChunks: 1,
          automaticNameDelimiter: '.',
          cacheGroups: {
            lfpantdesigns: {
              name: 'antdesigns',
              chunks: 'all',
              test: /[\\/]node_modules[\\/](@antv|antd|@ant-design)/,
              priority: 10,
            },
            lfpvendors: {
              name: 'vendors',
              chunks: 'all',
              test: /[\\/]node_modules[\\/](lodash|moment|react|dva|postcss|mapbox-gl)/,
              priority: 10,
            },
            // // 最基础的
            // 'async-commons': {
            //   // 其余异步加载包
            //   name: 'async-commons',
            //   chunks: 'async',
            //   minChunks: 2,
            //   priority: 2,
            // },
            lfpcommons: {
              name: 'commons',
              // 其余同步加载包
              chunks: 'all',
              minChunks: 2,
              priority: 1,
              // 这里需要注意下,webpack5会有问题, 需加上这个 enforce: true,
              // refer: https://github.com/webpack-contrib/mini-css-extract-plugin/issues/257#issuecomment-432594711
              enforce: true,
            },
          },
        },
      },
    });
  };
export default webpackPlugin

config.ts文件

主要是在defineConfig里配置一下chunks,代码如下,因为development编译打包方式和build不同,我们先不考虑development,只针对build。

// config/config.ts
import { defineConfig } from 'umi';
import defaultSettings from './defaultSettings';
// import proxy from './proxy';
// const QcCOSPlugin = require('webpack-cos-plugin')
// const { UMI_ENV } = process.env;
import webpackPlugin from './plugin';
const auth = '@/layouts/SecurityLayout';
export default defineConfig({
  // history: { type: 'hash' },
  // 打包
  publicPath: '/',
  nodeModulesTransform: {
    type: 'none',
  },
  define: {
    'process.env.API_HOST': 'https://...........',
    'process.env.serverDomain': 'https://...........',
    'process.env.NEW_MD_HOST': `https://...............`,
  },
  chunks:
  process.env.NODE_ENV === 'development'
      ? undefined
      : ['antdesigns', 'vendors', 'commons', 'umi'],
  chainWebpack: process.env.NODE_ENV === 'development' ? undefined : webpackPlugin,

重新进行打包分析

脚本命令:npm run analyze

可以看到总的parsed打包体积为 6.06MB是原来27.92MB的21.7%, gizped 后也有 1.73MB是原来8.07MB的21.4%,都缩小到原来的1/5左右

下一步Jekins试一下实际的打包速度比原来快多少

原先是10分钟左右,现在6分钟多效果还是比较明显的。

几天后的效果,网络稳定的情况下都在5分钟左右。比之前的10分钟打包时间缩短了一半,Nice !!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/62485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

年产2万吨山楂酒工厂的设计—原料前处理工段及车间的设计(lunwen+cad图纸)

目 录 1前 言 1 1.1设计背景及目的 1 1.1.1山楂酒的介绍及功效 1 1.1.2目标人群 1 1.1.3发展前景 2 1.2设计依据 2 1.3设计内容 2 1.4原材料的选择 3 2工艺流程设计 5 2.1工艺流程的确定 5 2.2分选 6 2.3清洁消毒 8 2.4去核 9 2.4.1去核机的介绍及选择 9 2.4.2山楂核的处理 10 …

MQ 概念介绍 / 配置以及原理 简书

文章目录 1、什么是MQ 2、MQ的多种产品 3、MQ的工作原理 4、ActiveMQ 的配置 5、ActiveMQ 的数据存储方式 6、ActiveMQ的主从服务 7、ActiveMQ的集群负载均衡 什么是MQ? Message Queue, 就是消息队列,MQ 经常会作为多系统当中的网络消息传输。是…

负载均衡式在线OJ判题系统

文章目录负载均衡式在线OJ1. 演示项目2. 所用技术及开发环境所用技术:开发环境3. 项目宏观设计I. leetcode结构II.宏观结构III.编写思路4. compiler服务1. 编译功能:2. 运行功能3. 编译并运行功能4. 打包成一个网络服务5. 基于MVC结构的oj服务设计1. 用户…

Java IO流(详解)

1. File1. 创建2. 操作1. 获取文件信息2. 目录创建/删除2. IO流1. FileInputStream1. 简单使用2. 读取中文2. FileOutputStream1. 简单使用2. 追加写入3. 文件拷贝4. FileReader1. 简单使用2. 提高读取速度5. FileWriter1. 简单使用6. 节点流和处理流简介7. BufferedReader1. 简…

产品开发需要考虑哪些场景

产品到项目中去,也从项目中来,也就是说产品开发后最终都是会到项目中历练,然后吸取项目中的优点,来补全产品中业务的不足、功能的不足,让产品更加完善,最终成为精品。 每个产品的形成都要多加考虑&#xf…

Github 用户查询案例【基于Vue2全局事件总线通信】

前言: 本次案例是一个基于 Vue2 的全局事件总线通信的仿 Github 用户搜索模块,使用的接口是 Github 官方提供的搜索接口: https://api.github.com/search/users?qxxx(发送请求时需要将输入的用户名称绑定替换掉xxx)&a…

HTML期末学生大作业-宠物之家网页作业html+css+javascript

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

仪表板支持水印设置,数据集新增脱敏规则支持,DataEase开源数据可视化分析平台v1.17.0发布

12月5日,DataEase开源数据可视化分析平台正式发布v1.17.0版本。 这一版本的功能升级包括:数据集方面,支持将数据集数据按指定条件导出为Excel文件,方便用户对权限范围内的数据进行二次处理。数据集字段支持日期解析格式设置&…

[附源码]计算机毕业设计网约车智能接单规划小程序Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Service层代码单元测试以及单元测试如何Mock

一、背景 接着上一篇文章:单元测试入门篇,本篇文章作为单元测试的进阶篇,主要介绍如何对Springboot Service层代码做单元测试,以及单元测试中涉及外调服务时,如何通过Mock完成测试。 二、Springboot Service层代码单…

[附源码]JAVA毕业设计快递物流管理(系统+LW)

[附源码]JAVA毕业设计快递物流管理(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术&…

华为云低代码技术:让矿区管理“智变”,一览无遗

摘要:基于华为低代码平台,万洲嘉智复用开发了9个数字化管理功能,成功解决了矿区管理的空区和难点,帮助煤矿园区实现了智能化管控。本文分享自华为云社区《【云享伙伴】第10期:华为云低代码技术:让矿区管理“…

[附源码]JAVA毕业设计-旅游产品销售管理-演示录像2020(系统+LW)

[附源码]JAVA毕业设计-旅游产品销售管理-演示录像2020(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff…

660846-99-1, Ac-Arg-Gly-Lys-AMC

Control for the two step histone deacetylase assay with Ac-Arg-Gly-Lys(Ac)-AMC. Ac-RGK-AMC corresponds to the product of the deacetylase reaction, which is subsequently cleaved by trypsin. Ac-精氨酸- gly - lys (Ac)-AMC两步法组蛋白去乙酰化酶测定对照。Ac-RGK…

直击家居建材采购痛点,数商云采购协同系统招投标功能助力企业招采透明高效

在后疫情时代,各类企业的采购与供应链数字化转型已是大势所趋,家居建材企业也不例外。用数字化技术助力建材产业转型,为供采双方提供线上精准对接服务,才能赋能新时代建材供应链。 建设采购平台已是大势所趋。作为企业价值链管理…

[附源码]Python计算机毕业设计Django南通大学福利发放管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

UEditorPlus v2.7.0发布 开放独立文档,附件样式优化

UEditor是由百度开发的所见即所得的开源富文本编辑器,基于MIT开源协议,该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器,主要做了样式的定制,更符…

Hoops API参考: 3D Graphics System的Set_Color()函数

void Set_Color(const char* color_spec)渲染一个段的内容时改变使用的颜色。还可以用于选择要在高亮模式中使用的曲面特性,以及用于特殊纹理贴图效果。 具体细节 Set_Color()的通用目标是使用这个颜色进行绘制。你可以之只给颜色命令,也可…

警惕 有种过敏叫“牛奶蛋白过敏”

过敏是一个全球性的健康问题。以此为基础。WHO据统计,过敏已成为世界第六大疾病。世界上有3亿人患有哮喘、特应性皮炎、过敏性鼻炎、胃肠道疾病等疾病。美国每年有4%-6%的儿童患有食物过敏。由于环境和食品添加剂的日益复杂,中国和发达国家的过敏性疾病正…

Java项目:SSM简单医院信息管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 管理员角色: 登录,个人资料管理,用户管理,科室管理,医生管理,患者管理,科室项目管理,患者诊疗记录管理等功能。 医生角色包含以下功…