首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在webpack 5. splitchunks.cacheGroup中使用ChunkGraph接口?

在webpack 5中,splitchunks.cacheGroup是用于配置代码分割的选项之一。而ChunkGraph接口是webpack 5中的一个内部接口,用于表示代码块之间的依赖关系图。

要在splitchunks.cacheGroup中使用ChunkGraph接口,可以按照以下步骤进行操作:

  1. 首先,在webpack配置文件中找到splitchunks.cacheGroup的配置项。
  2. 在cacheGroup中,可以使用test属性来匹配需要进行代码分割的模块。例如,可以使用正则表达式来匹配特定的模块路径或名称。
  3. 在cacheGroup中,可以使用priority属性来设置优先级。优先级越高的cacheGroup会被优先处理。
  4. 在cacheGroup中,可以使用reuseExistingChunk属性来指定是否重用已有的代码块。设置为true表示重用已有的代码块,设置为false表示不重用。
  5. 在cacheGroup中,可以使用enforce属性来指定代码块的类型。可选值有"initial"、"async"和"all",分别表示初始代码块、异步代码块和所有代码块。
  6. 在cacheGroup中,可以使用filename属性来指定生成的代码块文件名的格式。可以使用占位符来表示不同的变量,例如"[id].js"表示使用代码块的id作为文件名。
  7. 在cacheGroup中,可以使用chunks属性来指定需要进行代码分割的代码块类型。可选值有"initial"、"async"和"all",分别表示初始代码块、异步代码块和所有代码块。
  8. 在cacheGroup中,可以使用minSize属性来指定生成的代码块的最小大小。只有当代码块的大小超过这个阈值时,才会进行代码分割。
  9. 在cacheGroup中,可以使用maxSize属性来指定生成的代码块的最大大小。只有当代码块的大小不超过这个阈值时,才会进行代码分割。
  10. 在cacheGroup中,可以使用automaticNameDelimiter属性来指定生成的代码块名称中的分隔符。
  11. 在cacheGroup中,可以使用chunks属性来指定需要进行代码分割的代码块类型。可选值有"initial"、"async"和"all",分别表示初始代码块、异步代码块和所有代码块。
  12. 在cacheGroup中,可以使用maxAsyncRequests属性来指定并行加载的最大异步请求数量。
  13. 在cacheGroup中,可以使用maxInitialRequests属性来指定并行加载的最大初始请求数量。
  14. 在cacheGroup中,可以使用minChunks属性来指定生成的代码块所需的最小模块数量。
  15. 在cacheGroup中,可以使用name属性来指定生成的代码块的名称。可以使用占位符来表示不同的变量,例如"[id].js"表示使用代码块的id作为名称。

通过使用ChunkGraph接口,可以更加灵活地配置splitchunks.cacheGroup,实现更精细化的代码分割策略。

关于webpack 5的splitchunks.cacheGroup的更多详细信息,可以参考腾讯云的Webpack文档:Webpack文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

工程化之webpack打包过程

/swc) Webpack 是一个非常强大的构建工具,它可以被认为是当今许多技术的一个基本组件,前端开发人员使用它来构建他们的应用程序。...当然,还有其他类型的模块 ExternalModule 和 ConcatenatedModule(当使用require.context()时)这些都不在我们讨论范围内。...模块,一旦创建和构建,除了「源代码」,还包含很多有意义的信息,使用的「加载器」 它的「依赖关系」 它的「出口」(如果有的话) 它的「哈希值」 ❞ 「同时entry对象的每一项都可以被认为是模块树的根模块...a.js b.js b1.js c.js c1.js d.js d1.js ---- 5....在webpack的说法,import()表达式定义了一个「异步的依赖关系块」。 现在,让我们先看看从上述配置创建的ChunkGraph的图表。

54010
  • 有点难的知识点: Webpack Chunk 分包规则详解

    ChunkGraph 对 Chunk 做一系列的变化、拆解、合并操作,重新组织成一批性能(可能)更高的 Chunks 。...对象,后续 SplitChunksPlugin 插件会在 Chunk 系列对象上做进一步的拆解、优化,最终反映到输出上才会表现出复杂的分包结果。...对应的模块依赖: 此时,webpack 会为入口 index.js、异步模块 async-a.js 分别创建分包,形成如下数据: 这里需要引入一个新的概念 —— Chunk 间的父子关系。...上述分包方案默认情况下会生成两个文件: 入口 index 对应的 index.js 异步模块 async-a 对应的 src_async-a_js.js 运行时,webpack 在 index.js 中使用...5 引入的 ChunkGraph 解决了什么问题 Chunk、ChunkGroup、ChunkGraph 分别实现什么能力,互相之间如何协作,为什么要做这样的拆分 SplitChunksPlugin

    1.5K30

    有点难的 webpack 知识点:Dependency Graph 深度解析

    :记录 Dependency Graph 信息的容器,一方面保存了构建过程涉及到的所有 module 、dependency 对象,以及这些对象互相之间的引用;另一方面提供了各种工具方法,方便使用者迅速读取出...处理,需要使用 moduleGraph.getExportsInfo 查询各个模块的 exportsInfo (模块导出的信息集合,与 tree-shaking 强相关,后续会单出一篇文章讲解)信息以确定如何分离...构建 ChunkGraph Webpack 主体流程,make 构建阶段结束之后会进入 seal 阶段,开始梳理以何种方式组织输出内容。...总结 本文讨论的 Dependency Graph 概念在 webpack 内部被大量使用,因此理解这个概念对我们理解 webpack 源码,或者学习如何编写插件、loader 都会有极大的帮助。...在 tree-shaking 过程如何被使用

    1.2K10

    Webpack 原理系列六: 彻底理解 Webpack 运行时

    __ 缓存对象的导出内容,避免重复执行 其中,业务模块代码被存储在 bundle 最开始的 __webpack_modules__ 变量,内容: var __webpack_modules__ =...promise.all ,用于异步加载多个模块 __webpack_require__.f :供 __webpack_require__.e 使用的中间件对象,例如使用 Module Federation...」,例如使用到异步加载时需要打包 __webpack_require__.e 函数,那么这里面必然有一个运行时依赖收集的过程 开发者编写的业务代码会被包裹进恰当的运行时函数,实现整体协调 落到 Webpack...体系管理 至此,runtime 依赖完成了从 module 内容解析,到收集,到创建依赖对应的 Module 子类,再将 Module 加入到 ModuleDepedencyGraph /ChunkGraph...在这个过程具体是怎么计算出 runtime 依赖的? 除了记录 module、chunk 的 runtimeRequirements 之外,ChunkGraph 还起什么作用?

    1.5K41

    有点难的知识点: Webpack Chunk 分包规则详解

    ChunkGraph 对 Chunk 做一系列的变化、拆解、合并操作,重新组织成一批性能(可能)更高的 Chunks 。...对象,后续 SplitChunksPlugin 插件会在 Chunk 系列对象上做进一步的拆解、优化,最终反映到输出上才会表现出复杂的分包结果。...Webpack 生成阶段,遇到异步引入语句时会为该模块单独生成一个 chunk 对象,并将其子模块都加入这个 chunk 。...对应的模块依赖: ? 此时,webpack 会为入口 index.js、异步模块 async-a.js 分别创建分包,形成如下数据: ? 这里需要引入一个新的概念 —— Chunk 间的父子关系。...上述分包方案默认情况下会生成两个文件: 入口 index 对应的 index.js 异步模块 async-a 对应的 src_async-a_js.js 运行时,webpack 在 index.js 中使用

    1.5K20

    玩转Webpack共需几步?

    通过这篇文章读者可以了解webpack的具体实现过程,并且自己也可以理解其打包原理,有利于更好的使用这些工具。...(二)初始化阶段 下图是Webpack初始化阶段的流程图: 我们使用Webpack的方式一般是通过wepback-cli,从webpack-cli的bin文件开始,其调用链大致如下:...上面例子的地址: (https://github.com/novlan1/rollup-intro/tree/master/webpack) 五、总结 本文分析了Tapable插件的使用和原理,讲解了Webpack...Webpack和Rollup打包原理大同小异,理解其打包原理有利于更好的使用这些工具。...参考资料: 1.Tapable 2.关于tapable你需要知道这些 3.tapable详解 4.Tapable(一) 5.一文吃透Webpack核心原理  作者简介 杨国旺 腾讯前端开发工程师 腾讯前端开发工程师

    46830

    webpack提了一个pr之后......

    我知道有些路注定要一个人走,自己调试webpack源码吧。 调试 我是用的工具是webstorm。 首先我在node_moduleswebpack目录下,全局搜索,迅速定位到图示函数。...告知 webpack 当选择moduleId 和chunkId时需要使用哪种算法 deterministic在不同的编译不变的短数字 id(最少三位)。有益于长期缓存。...在webpack训练营的demo,有这么一个例子,正好用到了deterministic。...pick:使用此提交不做操作 squash:将指定的提交合并到上边的pick请求,保留提交信息 fixup:与 squash 类似,但不保留提交信息 把不需要的记录 改成fixup ,:wq保存...签署EasyCLA 一个开源协议,承诺自己的代码可供开源使用 这里需要注意,自己提交信息的邮箱作者信息,需要和签署的邮箱一致,如果不一致,即使签署依然显示无效。

    51030

    图解串一串 webpack 的历史和核心功能

    比如 css modules: 源码在 js 模块引入 css: 编译后会给 css 和在 js 里用的 className 上加上 hash: 这样自然就做到了 css 的局部化,这就是 css...这就要用到 webpack 的 code spliting 功能了: 改成这种方式,使用 import 的 api 加载: 这时候代码运行依然是正常的: 但这时候有了两个 js 文件,第二个 js...这些 module 要按照不同的规则来分组,也就是分到不同的 chunk 里,这样 ModuleGraph 就变成了 ChunkGraph,这个阶段叫做 seal。...对 ModuleGraph 做 chunk 拆分,按照 splitChunks 的逻辑或者其他拆分逻辑,拆分后就生成了 ChunkGraph,这个阶段叫做 seal。...dev server 是静态资源服务,同时支持对接口做转发的 proxy 功能。

    24820

    阔别两年,webpack 5 正式发布了!

    迁移:当使用自定义模块或依赖关系时,建议将它们实现成可序列化的,以便从持久化缓存获益。 用于缓存的插件 增加了一个带有插件接口的 Cache 类。该类可用于写入和读取缓存。...入口文件的新增配置 在 webpack 5 ,入口文件除了字符串、字符串数组,也可以使用描述符进行配置了,: module.exports = {   entry: {     catalog: {...所有关于模块在模块图中如何连接的信息,现在都存储在 ModulGraph 的 class 。所有关于模块与 chunk 如何连接的信息现在都已存储在 ChunkGraph 的 class 。...迁移:在 ModuleGraph 和 ChunkGraph使用新的 API。...迁移:自定义模块需要实现这些新的接口方法。 全新的观察者 webpack使用的观察者已重构。它之前使用的是 chokidar 和原生依赖 fsevents(仅在 OSX 上)。

    1.7K32

    Webpack 原理系列八:产物转译打包逻辑

    __ 函数调用 源码 console 语句所使用的 name 变量被转译为 _name__WEBPACK_IMPORTED_MODULE_0__.default 添加注释 那么 Webpack 如何执行这些转换的呢...1.3.1 使用 Source 更改代码 Source 是 Webpack 编辑字符串的一套工具体系,提供了一系列字符串操作方法,包括: 字符串合并、替换、插入等 模块代码缓存、sourcemap 映射...、hash 计算等 Webpack 内部以及社区的很多插件、loader 都会使用 Source 库编辑代码内容,包括上文介绍的 Template.apply 体系,逻辑上,在启动模块代码生成流程时,...source.insert 插入字符串,示例代码第 10-14 行 使用 compilation.dependencyTemplates 注册 DemoDependency 与 DemoDependencyTemplate...JavascriptModulesPlugin 内置的打包函数有: renderMain:打包主 chunk 时使用 renderChunk:打包子 chunk ,异步模块 chunk 时使用 两个打包函数实现的逻辑接近

    1.2K10

    阔别两年,webpack 5 正式发布了!

    迁移:当使用自定义模块或依赖关系时,建议将它们实现成可序列化的,以便从持久化缓存获益。 用于缓存的插件 增加了一个带有插件接口的 Cache 类。该类可用于写入和读取缓存。...入口文件的新增配置 在 webpack 5 ,入口文件除了字符串、字符串数组,也可以使用描述符进行配置了,: module.exports = { entry: { catalog: {...所有关于模块在模块图中如何连接的信息,现在都存储在 ModulGraph 的 class 。所有关于模块与 chunk 如何连接的信息现在都已存储在 ChunkGraph 的 class 。...迁移:在 ModuleGraph 和 ChunkGraph使用新的 API。...迁移:自定义模块需要实现这些新的接口方法。 全新的观察者 webpack使用的观察者已重构。它之前使用的是 chokidar 和原生依赖 fsevents(仅在 OSX 上)。

    1K31

    Webpack 5 正式发布

    Webpack简介 随着前端发展日冲天,前端项目也越来越复杂,得益于Nodejs的发展,前端模块化、组件化、工程化也大势所趋。...所谓的模块就是在平时的前端开发,用到一些静态资源,JavaScript、CSS、图片等文件,Webpack就将这些静态资源文件称之为模块。...script:通过 标签加载一个 url,并从一个全局变量(以及它的可选属性)获取输出。外部模块是一个异步模块。 5....迁移:当使用自定义模块或依赖关系时,建议将它们实现成可序列化的,以便从持久化缓存获益。 10.4 用于缓存的插件 增加了一个带有插件接口的 Cache 类。该类可用于写入和读取缓存。...所有关于模块在模块图中如何连接的信息,现在都存储在 ModulGraph 的 class 。所有关于模块与 chunk 如何连接的信息现在都已存储在 ChunkGraph 的 class

    1.2K10

    webpack 5 更新日志

    默认情况下,缓存将分别存储在 node_modules/.cache/webpack (当使用 node_modules 时)和 .pnp/.cache/webpack(当使用 Yarn PnP 时,...在 webpack 4 ,我们添加了实验性功能,并在 changelog 中指出它们是实验性的,但是从配置并不能很清楚的了解这些功能是实验性的。...在 webpack 5 ,有一个新的 experiments 配置项,允许启用实验性功能。这样可以清楚地了解启用/使用了哪些实验特性。...虽然 webpack 遵循语义版本控制,但是实验性功能将成为例外。它可能包含 webpack 次要版本的破坏性更改。发生这种情况时,我们将在 changelog 添加清晰的注释。...chunkIds 或 moduleIds optimization.splitChunks test 不在匹配 chunk 名 迁移:使用 test 函数(module, { chunkGraph }

    1.4K10

    一名【合格】前端工程师的自检清单

    2. instanceof的底层实现原理,手动实现一个 instanceof 4.实现继承的几种方式以及他们的优缺点 5.至少说出一种开源项目( Node)应用原型继承的案例...GIS开发框架,百度地图 API 4.掌握一种可视化开发框架, Three.js、 D3 5.工具函数库, lodash、 underscore、 moment等,理解使用的工具类或工具函数的具体实现原理...两者的区别 2.可以使用 npm运行自定义脚本 3.理解 Babel、 ESLint、 webpack等工具在项目中承担的作用 4....、接口 mock工具的使用 yapi 2.掌握一种高效的日志埋点方案,可快速使用日志查询工具定位线上问题 3.理解 TDD与 BDD模式,至少会使用一种前端单元测试框架 版本控制...SSR实现方案、优缺点、及其性能优化 5. Webpack的性能优化方案 6. Canvas性能优化方案 7.

    94021

    一名【合格】前端工程师的自检清单

    2. instanceof的底层实现原理,手动实现一个 instanceof 4.实现继承的几种方式以及他们的优缺点 5.至少说出一种开源项目( Node)应用原型继承的案例...GIS开发框架,百度地图 API 4.掌握一种可视化开发框架, Three.js、 D3 5.工具函数库, lodash、 underscore、 moment等,理解使用的工具类或工具函数的具体实现原理...两者的区别 2.可以使用 npm运行自定义脚本 3.理解 Babel、 ESLint、 webpack等工具在项目中承担的作用 4....、接口 mock工具的使用 yapi 2.掌握一种高效的日志埋点方案,可快速使用日志查询工具定位线上问题 3.理解 TDD与 BDD模式,至少会使用一种前端单元测试框架 版本控制...SSR实现方案、优缺点、及其性能优化 5. Webpack的性能优化方案 6. Canvas性能优化方案 7.

    1K30

    Webpack知识体系 - 笔记

    # Webpack 打包核心流程 核心流程: 图片 # 使用 Webpack 使用 Webpack 的好处: 多个文件资源合并成一个,减少 http 请求数支持模块化开发 支持高级 JS 特性...与旧时代 —— 在 HTML 文件维护 css 相比,这种方式会有什么优劣处? 有没有接触过 Less、Sass、Stylus 这一类 CSS 预编译框架?如何在 Webpack 接入这些工具?...HTML,使用 Webpack 自动化有什么优缺点?...会以钩子形式通知插件此刻正在发生什么事情 上下文:通过 tapable 提供的回调机制,以参数方式传递上下文信息义 交互:在上下文参数对象附带了很多存在 side effect 的交互接口...,插件可以通过这些接口改变 # 学习方法 入门应用 理解打包流程 熟练掌握常用配置项、Loader、插件的使用方法,能够灵活搭建集成 Vue、React、Babel、Eslint、Less、Sass

    1.5K20

    前端学习知识体系

    2.instanceof的底层实现原理,手动实现一个 instanceof 3.实现继承的几种方式以及他们的优缺点 4.至少说出一种开源项目( Node)应用原型继承的案例 5.可以描述 new一个对象的详细过程...使用 Promise 实现串行 6.Node 与浏览器 EventLoop 的差异 7.如何在保证页面运行流畅的情况下处理海量数据 语法和API 1.理解 ECMAScript 和 JavaScript...、 D3 5.工具函数库, lodash、 underscore、 moment 等,理解使用的工具类或工具函数的具体实现原理 开发和调试 1.熟练使用各浏览器提供的调试工具 2.熟练使用一种代理工具实现请求代理....ESLint规则检测原理,常用的 ESLint配置 5.Babel的核心原理,可以自己编写一个 Babel插件 6.可以配置一种前端代码兼容方案, Polyfill 7.Webpack的编译原理、构建流程...、接口 mock工具的使用 yapi 2.掌握一种高效的日志埋点方案,可快速使用日志查询工具定位线上问题 3.理解 TDD与 BDD模式,至少会使用一种前端单元测试框架 版本控制 1.理解 Git的核心原理

    1.9K10

    前端工程化那些事

    、rollup、Parcel、grunt、gulp 2.1 Webpack webpack是前端打包工具,通过分析所在项目的目录结构,找到模块及各模块间的依赖关系,且将浏览器不能直接运行的语言typescript...是主要的特征 css预处理器less、sass等浏览器不支持 部分低版本浏览器不支持es6语法,需要转换为es5语法,为浏览器使用 项目依赖过多,文件过多,需要将复杂的代码结构转换为细化 模块化打包...2.4 包管理工具构建 npm 可以使用npm脚本来执行构建操作,在packjson编写对应的命令,通过执行npm run [任务]的方式,如下所示?...:适⽤于⼤型项目构建:webpack目前生态最完善,应用场景更多,社区人气高,有强⼤的loader和插件⽣态 Rollup:适⽤于工具库的打包: 可以将各个模块打包进⼀个⽂件,具备 Tree-shaking...3.4 总结 如果团队项目规模较小,那么推荐使用数据拦截型(mockjs)就足够,变更方便,但如果项目规模大,多人协作,且需求接口变更快,建议使用mock接口管理平台 4.前端规范 随着前端工程化的日益成熟

    1.5K30
    领券