首页 > 其他分享 >webpack的分包split-chunks 配置及策略

webpack的分包split-chunks 配置及策略

时间:2023-11-18 11:45:04浏览次数:51  
标签:缓存 拆分 配置 splitChunks webpack split 模块 chunks 加载

splitChunks 是 webpack 中用于分包的配置选项之一,它主要用于控制如何拆分代码块,以优化资源加载和减小文件体积。splitChunks 配置可以在 webpack 4.x 版本及更高版本中使用。

以下是一些常见的 splitChunks 配置示例和说明:

 

上述配置中的参数及其含义如下:

  • chunks: 'all': 指定哪些块应该被优化,默认为 async,可以设置为 'all' 表示包括 initialasync 类型的块。

  • minSize: 0: 指定拆分出的块的最小大小,如果拆分出的块小于这个值,将不会被拆分。

  • minChunks: 1: 块的最小被引用次数,达到这个次数才会被拆分。

  • maxAsyncRequests: 5: 按需加载时的最大并行请求数。

  • maxInitialRequests: 3: 入口点处的最大并行请求数。

  • automaticNameDelimiter: '~': 自动生成名称的分隔符。

  • name: true: 根据拆分出的块生成的名称,如果设置为 true,将自动生成。

  • cacheGroups: 配置缓存组,可以将多个模块合并到一个文件中,避免重复加载。示例中包含 vendors 缓存组,用于将第三方模块提取到一个单独的文件中。

  • test: /[\\/]node_modules[\\/]/: 缓存组的规则,这里使用正则表达式匹配第三方模块。

  • priority: -10: 缓存组的优先级,数字越大,优先级越高。vendors 的优先级设置为 -10,确保它优先匹配。

  • reuseExistingChunk: true: 如果当前块包含已经被拆分出的模块,则将复用该模块而不是创建新的块。

  • default: 默认的缓存组,用于处理非第三方模块。

上述配置是一个比较通用的设置,实际的配置可能会因项目结构和需求而有所不同。splitChunks 的目标是根据实际情况拆分代码块,以提高应用的加载性能。

实际应用中,splitChunks 的策略会根据具体的项目结构和需求而有所不同。以下是一些实际应用中常见的分包策略:

1.提取第三方库(Vendor):

  1. 将第三方库(例如React、Vue、lodash等)从应用代码中分离出来,以便充分利用浏览器的缓存机制,减小应用代码的体积。
  2. 通过配置 test: /[\\/]node_modules[\\/]/ 可以将 node_modules 中的模块提取到单独的文件中。
 

 2.提取公共模块(Common):

  • 将应用中多个模块之间共享的代码提取到一个独立的文件中。
  • 可以通过配置 cacheGroups 中的 default 缓存组来实现。

    3.按需加载(Async):

    • 对于按需加载的模块,可以配置 chunks: 'async',确保只有异步加载的模块才会被拆分出来,而不影响入口点的加载性能。

       4.调整最小大小(minSize)和最小引用次数(minChunks):

      • 通过调整 minSizeminChunks 来控制拆分的块的大小和引用次数,以适应项目的特定情况。

        5.自定义名称(name):

        • 配置 name 属性,可以为拆分出的块指定自定义的名称。

           

标签:缓存,拆分,配置,splitChunks,webpack,split,模块,chunks,加载
From: https://www.cnblogs.com/MDGE/p/17840253.html

相关文章

  • 利用 Webpack CodeSplitting 完成复杂应用拆包
    AllinOne的弊端通过Webpack实现前端项目整体模块化的优势固然明显,但是它也会存在一些弊端:它最终会将所有的代码打包到一起。试想一下,如果应用非常复杂,模块非常多,那么这种AllinOne的方式就会导致打包的结果过大,甚至超过4~5M。在绝大多数的情况下,应用刚开始工作时,并不......
  • webpack配置优化
    Webpack是一个非常强大的模块打包器,用于处理和打包前端资产。随着项目的复杂性增加,配置文件和优化Webpack的性能就变得非常重要。以下是一些关于如何优化Webpack配置的策略:使用最新版本的Webpack:每个新版本的Webpack都可能包含性能改进和修复。确保你的项目使用的是最......
  • split是对字符串的分割,而10.42编译器自动类型推断中应该是double类型的
    ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;最难掌握的是round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将......
  • shell脚本之“sort“、“uniq“、“tr“、“cut“、“split“、“paste“以及“eval“
    一、sort命令1.1、作用以行为单位对文件内容进行排序也可以根据不同的数据类型来排序1.2、语法格式sort[选项]参数catfile|sort选项1.3、常用选项-f∶忽略大小写,会将小写字母都转换为大写字母来进行比较;-b∶忽略每行前面的空格;-n∶按照数字进行排序;-r∶反向......
  • Webpack Bundle Analyzer包分析器
    当我们需要分析打包文件dist里哪些资源可以进一步优化时,就可以使用包分析器插件webpack-bundle-analyzer。NPM上的介绍是使用交互式可缩放树图可视化webpack输出文件的大小。我的是vue2项目。1、webpack-bundle-analyzer插件的安装$npminstall--save-devwebpack-bundle-analy......
  • webpack配置局域网访问项目
     要配置webpack允许局域网访问项目,你需要做以下几个步骤: 1.在webpack配置文件中,找到devServer选项,并设置其属性`host`为`0.0.0.0`。这将允许其他设备通过局域网IP访问你的项目。module.exports={//...devServer:{host:'0.0.0.0',//...},//........
  • Linux命令(117)之split
    linux命令之split1.split介绍linux命令split是按照指定的大小或行数分割文件。输出文件名为“前缀aa”、“前缀ab”。默认前缀以“x”开头,默认文件大小为1000行2.split用法split[参数]filename[前缀]split参数参数说明-l指定输出文件有多少行-a指定长度的后缀,默认:2-b指定输出文......
  • vue-cli-service vue.config.js配置 productionSourceMap与webpack中的devtool 关联详
    https://webpack.js.org/configuration/devtool/https://cli.vuejs.org/zh/config/#productionsourcemap https://github.com/vuejs/vue-cli/blob/f0f254e4bc81ed322eeb9f7de346e987e845068e/packages/%40vue/cli-service/lib/config/prod.js#L7 可以在源码中看到if(pro......
  • In R, how to split/subset a data frame by factors in one column?
    按照某列的值拆分data.frame Mydataislikethis(forexample):IDRateState124AL235MN346FL434AL578MN699FLIwanttosplitthedatabystateandIwanttoget3datasetslikebelow:dataset1IDRateState124AL......
  • LangChain=>RecursiveCharacterTextSplitter
     .Net版本LangChain源码:github.comRecursiveCharacterTextSplitter调用方法:varstate_of_the_union_txt="text-Content";vartextSplitter=newRecursiveCharacterTextSplitter(chunkSize:300,chunkOverlap:30);vartexts=textSplitter.CreateDocuments(n......