-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(mini-runner/mini-split-chunks): (主包大小最优方案)添加小程序提取公共模块插件,主包没有引用的,且分包内引用的mod… #8135
Conversation
非常棒,我们研究下 |
…ule提取到分包下vendors,跨分包引用的module提取到分包下,达到主包体积最优
d773493
to
8315494
Compare
…ude参数,exclude的module不走分包提取的逻辑
137a29e
to
4e078e4
Compare
@luckyadam ,这个 PR 有计划合入主分支不? |
@heymie 能不能把这两行清除目录的代码去掉试试看,我这边试了下,有点难复现,感觉dev环境不做移除看起来也没什么问题 |
@huangcj99 移除了不会出现这个报错,但是ide打包失败,提示主包size过大。 |
@huangcj99 |
目前每次构建完都会清理一次sub common这个文件夹,可能是ide有缓存
AndroidRookie ***@***.***> 于 2021年6月17日周四 上午9:09写道:
… @huangcj99 <https://github.com/huangcj99>
还有一个问题就是在模拟调试的时候sub-common下的文件是累积的?
每修改一次,产生的文件就加一倍,导致要用真机调试的话每次都得重新编译。
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#8135 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AF7TBOEF5O2K7GBUIKY32E3TTFDNFANCNFSM4UDLG2RA>
.
|
那应该是移除文件后,ide有缓存读取不到原来的文件造成这个报错了,但是不清除又会积累,尴尬 |
能否和微信那边沟通一起看看 |
@huangcj99 最新taro版本,支付宝编译错误 |
@huangcj99 这个功能能作为一个单独插件兼容2.x版本嘛 |
可以把暂存的sub common提取到外层的目录,这样子ide就不会检测了,亲测可行。还有个问题,子包的sub-common是累积的,建议改成每次保存重新编译,清空一次子包的sub-common |
|
@linguoqiang001 你好, 我这边用
然后参照文档中的设置来修改 |
报啥错,贴一下 |
@linguoqiang001 刚回复你的时候打字没打全, 还是报同样的错:
|
如果只有主包页面是会报这个错的,你可以添加一个无用的分包页面。 |
@linguoqiang001
|
为的是让 |
@SilentFlute 你这种就是只有主包,你加个分包试下。还有你都没有分包去配splitChunks好像没啥用吧,更何况你都用了optimizeMainPackage,为啥还去配置splitChunks呢。你说你图片太大了,建议尽量使用网络图片。 |
@linguoqiang001 我刚开始用
后来有人cue我你的这个评论, 然后我才尝试的
还是这个
需要一个真实的页面? |
我试了下, 发现还是玩不转... |
感谢@linguoqiang001 提供的帮助, 问题解决了, 这里记录一下: NervJS/taro-docs#102 |
hello,遇到了一种不兼容的情况,想可以兼容下,谢谢!issues:9862 |
之前其实有考虑过放外层,但是怕会覆盖到别人项目的文件,后面想想感觉给个暂存路径配置项会不会好一点,让用的人自己填一个dist外的路径 |
刚提了pr解决了,#9881,之前没考虑到没分包配置的情况,确实不太友好 |
开发者工具报的'no such of file or dir'这个错误 #9967 这个版本修复了,不再输出暂存的文件 |
还是有这个问题 全量页面反复编译 总包还是会超20M sub-common里的文件不断的增加且无法覆盖 |
在这里找到关键代码注释掉 就行了 |
@huangcj99 如果非要固定的话,是不是用 os.tmpdir() 获取系统临时目录然后固定一下会更好,也不会存在放到项目目录下导致的缓存问题,而且目前来说 this.isDevMode 导致的 depName 永远不同从而引发的子包 sub-common 大小无限累积问题还挺严重的,希望尽快优化一下 |
|
…ule提取到分包下vendors,跨分包引用的module提取到分包下,达到主包体积最优
这个 PR 做了什么? (简要描述所做更改)
一、插件公共模块提取逻辑
添加miniSplitChunksPlugin,打包时分析module与chunk的依赖关系,筛选出主包没有引用的module提取到分包内,达到主包体积最优的目的,下面是提取的两种类型的分包公共模块(该方案已支持css等文件)
1、分包根目录/sub-vendors
如果该module只被单个分包内的多个page引用,则提取到该分包根目录的sub-vendors文件中。
(之前使用vendors作为filename,会导致common.wxss会@import分包内的vendors.wxss文件,导致报错,所以改成sub-vendors)
2、分包根目录/sub-common/*
如果该module被多个分包内的page引用,则先提取到outputRoot的sub-common文件夹下,输出文件后根据之前记录的依赖关系,将sub-common源目录下的公共模块复制到对应的分包下的sub-common文件夹,并给分包内的page加上require语句,页面的wxss通过@import语句引入,复制完成后删除sub-common源目录
二、如何使用?
mini配置添加optimizeMainPackage配置,将enable属性设置为true则使用该公共模块提取插件(默认为false不开启该功能)。如果有module不想走分包提取的逻辑,可以添加exclude属性,支持字符串和函数的方式,这样匹配到的module会走原来提取到主包的逻辑
这个 PR 是什么类型? (至少选择一个)
这个 PR 满足以下需求:
这个 PR 涉及以下平台:
其它需要 Reviewer 或社区知晓的内容: