…ule提取到分包下vendors,跨分包引用的module提取到分包下,达到主包体积最优
这个 PR 做了什么? (简要描述所做更改)
一、插件公共模块提取逻辑
添加miniSplitChunksPlugin,打包时分析module与chunk的依赖关系,筛选出主包没有引用的module提取到分包内,达到主包体积最优的目的,下面是提取的两种类型的分包公共模块
1、分包根目录/vendors
如果该module只被单个分包内的多个page引用,则提取到该分包根目录的vendors文件中
2、分包根目录/sub-common/*
如果该module被多个分包内的page引用,则先提取到outputRoot的sub-common文件夹下,输出文件后根据之前记录的依赖关系,将sub-common源目录下的公共模块复制到对应的分包下的sub-common文件夹,并给分包内的page加上require语句,复制完成后删除sub-common源目录
二、如何使用?
mini配置添加optimizeMainPackage配置,将enable属性设置为true则使用该公共模块提取插件(默认为false不开启该功能)。如果有module不想走分包提取的逻辑,可以添加exclude属性,支持字符串和函数的方式,这样匹配到的module会走原来提取到主包的逻辑
这个 PR 是什么类型? (至少选择一个)
错误修复(Bugfix) issue id #
新功能(Feature)
代码重构(Refactor)
TypeScript 类型定义修改(Typings)
文档修改(Docs)
代码风格更新(Code style update)
其他,请描述(Other, please describe):
这个 PR 满足以下需求:
提交到 master 分支
所有测试用例已经通过
代码遵循相关包中的 .eslintrc, .tslintrc, .stylelintrc 所规定的规范
在本地测试可用,不会影响到其它功能
这个 PR 涉及以下平台:
微信小程序
支付宝小程序
百度小程序
头条小程序
QQ 轻应用
快应用平台(QuickApp)
Web 平台(H5)
移动端(React-Native)
其它需要 Reviewer 或社区知晓的内容: