Webpack5 cacheGroups

文章目录

  • 一、 cacheGroups是什么,有什么用?
  • 二、怎么使用cacheGroups?
  • 三、cacheGroups实际应用之一


一、 cacheGroups是什么,有什么用?

在Webpack 5中,cacheGroups是用于配置代码拆分的规则,它可以帮助你更细粒度地控制生成的代码块。

作用:

  1. 将依赖项(第三方库)从应用代码中抽离出来,提高构建速度。
  2. 将应用代码按照自定义的规则拆分成不同的代码块,实现按需加载,减小初始加载的文件大小。

二、怎么使用cacheGroups?

具体用法:
在webpack.config.js中的optimization.splitChunks.cacheGroups对象中配置:

module.exports = {// ...其他配置optimization: {splitChunks: {cacheGroups: {group1: {test: /pattern/,name: 'group1',chunks: 'initial',enforce: true},group2: {test: /pattern/,name: 'group2',chunks: 'all',enforce: true}}}}
}

具体参数解释:

  • test: 用于匹配模块的正则表达式。
  • name: 指定生成的代码块的名称。
  • chunks: 指定应该包含哪些类型的代码块。可选值有initial(初始代码块)、async(按需加载的代码块)和all(所有代码块)。
  • enforce: 设置为true时,强制生成该代码块,即使它可能已经满足了其他的缓存组规则。

通过合理配置cacheGroups,可以根据项目需求将代码拆分成不同的块,提高构建速度和应用的加载性能。

三、cacheGroups实际应用之一

vue项目可以使用cacheGroups抽离一些公共模块,比如layouts(项目页面框架),elementUI或者其他ui组件库,vue,以及都会分离的libs(node_modules目录模块),这里我举例说明的是对 libs 的配置项。

 libs: {name: "chunk-libs",//指定了该cacheGroup输出的chunk的名称test: /[\\/]node_modules[\\/]/,//表示只有当模块来自于node_modules目录时,才会被打包到该chunk中priority: 10, // 权重最低,优先考虑前面内容chunks: "initial",//"initial"表示只将初始的chunk(即入口chunk)打包到该cacheGroup中},

在Webpack 5中,cacheGroups是用于配置优化代码分割的选项之一。这段代码定义了一个名为"libs"的cacheGroup。

  • name: "chunk-libs"指定了该cacheGroup输出的chunk的名称。
  • test: /[\/]node_modules[\/]/表示只有当模块来自于node_modules目录时,才会被打包到该chunk中。
  • priority: 10指定了该cacheGroup的优先级,值越大,优先级越高。这意味着其他cacheGroup中定义的规则优先级低于该规则,所以在判断模块属于哪个cacheGroup时,会先考虑该规则。
  • chunks: "initial"表示只将初始的chunk(即入口chunk)打包到该cacheGroup中。

综上所述,这段代码的作用是将来自于node_modules目录且属于初始chunk的模块打包到一个名为"chunk-libs"的chunk中,并且该cacheGroup具有最低的优先级(权重最低),优先考虑其他cacheGroup中的规则

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

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

相关文章

使用pg_prewarm缓存PostgreSQL数据库表

pg_prewarm pg_prewarm 直接利用系统缓存的代码,对操作系统发出异步prefetch请求,在应用中,尤其在OLAP的情况下,对于大表的分析等等是非常耗费查询的时间的,而即使我们使用select table的方式,这张表也并不可能将所有…

PostgreSql 启停

一、启动 直接运行 postgres 进程启动。使用 pg_ctl 命令启动。(pg_ctl 命令实际也是封装的 postgres 进程) 示例: pg_ctl -D /data/pg13/data start 或 postgres -D /data/pg13/data &二、停止 使用 pg_ctl 命令停止,优先…

InfluxDB2如何求增量数据

需求 项目中需要接入电表设备,求用电量。 按天和设备统计用电量 按天统计用电量 统计总用电量 存在的问题 difference 函数可以求增量,但是以上计算均存在一个问题,比如xx设备有8.1号和8.2号的数据,我统计每天的用电量&#xf…

JS双问号(??)和问号点(?.)的用法

1.双问号(??) value1 ?? value2 ??在value1和value2之间取值,只有当value1为null或者undefined时取value2,否则取value1(0,false,""被认为是有意义的,所以还是取value1) const …

Consul实战

Consul实战 什么是Consul Consul是一种为分布式系统提供服务发现、配置共享和健康检查的开源工具; 可以用来做微服务架构里的注册中心和配置中心。Consul的特定和功能有: 1.服务发现 consul允许微服务注册自己的实例到Consul, 并查询consul来获取可用的…

​Web3到底是个啥?

Web3到底是个啥? Web3是近两年来科技领域最火热的概念之一,但是目前对于Web3的定义却仍然没有形成标准答案,相当多对于Web3的理解,都是建立在虚拟货币行业(即俗称的“币圈”)的逻辑基础之上的。 区块链服务…

Three.js给场景添加背景颜色,背景图,全景图

1.相关API的使用: 1 THREE.Color (用于创建和表示颜色) 2. THREE.TextureLoader(用于加载和处理图片纹理) 3. THREE.SphereGeometry(用于创建一个球体的几何体) 4. THREE.Mesh(用…

MySQL索引特性

目录 一、索引 二、MySQL 与磁盘交互基本单位 三、索引的理解 一、索引 为什么要有索引? 首先我们插入一个8000000条记录的数据,再来查询数据,看看没有索引的情况下,会耗费多长时间。 当执行完这几条命令时,我们会发…

获取全部的地区并生成表格

思路 写文章的时间2023-8-4,大部分网页设置的区域都是先是省,然后通过省获取对应的市,再通过市获取对应的区,以此类推。所以模拟的请求也是按照这个逻辑,先获取所有的省,再获取所有的市,最后获取…

解决:浮点数(小数)数学运算精度有限 保留固定位数

一、数学运算 问题:0.1 0.2 0.30000000000000004 在JavaScript中,整数和浮点数都属于Number类型,它们都统一采用64位浮点数进行存储。因浮点数的精度有限,会出现精度丢失,舍入误差问题。 const operationObj {/*** …

工作遇到问题与解决办法(一)

一、构建父子工程 父 <groupId>com.ruoyi</groupId> <artifactId>ruoyi</artifactId> <version>3.8.5</version> <modules><module>ruoyi-admin</module><module>ruoyi-framework</module><module>…

PyTorch 中的累积梯度

https://stackoverflow.com/questions/62067400/understanding-accumulated-gradients-in-pytorch 有一个小的计算图&#xff0c;两次前向梯度累积的结果&#xff0c;可以看到梯度是严格相等的。 代码&#xff1a; import numpy as np import torchclass ExampleLinear(torch…

C语言每日一题:13《数据结构》环形链表。

题目链接&#xff1a; 一.环形链表运动基础。 使用快慢指针利用相对移动的思想&#xff1a; 1.第一种情况&#xff1a; 1,令快指针&#xff08;fast&#xff09;速度为2. 2.慢指针&#xff08;slow&#xff09;速度为1. 3.以慢指针进入环中开始。 4。假设slow刚刚进入环中fast…

【夜深人静学习数据结构与算法 | 第十二篇】动态规划——背包问题

目录 前言&#xff1a; 01背包问题&#xff1a; 二维数组思路&#xff1a; 一维数组思路&#xff1a; 总结&#xff1a; 前言&#xff1a; 在前面我们学习动态规划理论知识的时候&#xff0c;我就讲过要介绍一下背包问题&#xff0c;那么今天我们就来讲解一下背包问题。 在这…

机器学习笔记 - 目标检测中的加权框融合与非极大值抑制的对比

一、对象检测后处理 后处理步骤是目标检测中一个琐碎但重要的组成部分。本文主要是为了了解当拥有多个对象检测模型的集合时,加权框融合(WBF)相对于传统非极大值抑制(NMS)作为对象检测中后处理步骤的差异。 对象检测模型通常使用非极大值抑制 (NMS) 作为默认后处理步骤来过…

权限测试点

1. 只给用户单独设置一个权限&#xff0c;设置之后检查该权限是否生效 2.给用户不设置任何权限&#xff0c;设置之后检查该用户能否使用系统 3.给用户设置全部权限&#xff0c;设置之后检查所有权限是否生效 4.给用户设置部分权限&#xff0c;设置后检查部分权限是否生效 5.用户…

NetApp 入门级全闪存系统 AFF A250:小巧而强大

NetApp 入门级全闪存系统 AFF A250&#xff1a;小巧而强大 作为 AFF A 系列中的入门级全闪存系统&#xff0c;AFF A250 不但可以简化数据管理&#xff0c;还能为您的所有工作负载提供令人惊叹的强劲动力&#xff0c;价格也平易近人。 AFF A250&#xff1a;您的新 IT 专家 AFF…

工厂方法模式(Factory Method)

工厂方法模式就是定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。工厂方法模式将类的实例化&#xff08;具体产品的创建&#xff09;延迟到工厂类的子类&#xff08;具体工厂&#xff09;中完成&#xff0c;即由子工厂类来决定该实例化哪一个类。 Define a…

Knife4j系列--解决不显示文件上传的问题

原文网址&#xff1a;Knife4j系列--解决不显示文件上传的问题_IT利刃出鞘的博客-CSDN博客 简介 本文介绍使用Knife4j时无法上传文件的问题。 问题复现 依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-…