我的应用程序中有将近17个模块,它们的大小与角度生成的相比可以忽略不计。
chunk {common} common.chunk.js (common) 2.18 MB
chunk {main} main.bundle.js (main) 4.42 MB [initial] [rendered]
chunk {polyfills} polyfills.bundle.js (polyfills) 616 KB [initial]
我知道Angular生成这些块来处理一些内部的东西,但是为什么主包是4.5 MB。
我做错什么了?
有没有办法缩小这些尺寸?
最佳答案
没有具体的方法来减小尺寸。一个想法是懒散地加载模块以减少初始块。
另一种方法是使用webpack bundle analyser.
在bundle analyser中,您可能会更深入地了解要优化的内容和如何优化。生成用于生产构建(--aot --prod
)的json并使用bundle analyser进行分析。
此外,如果尚未将所有包更新为最新包,则树抖动可能无法工作,因此,如果导入以下内容:
import {Observable} from `rxjs/Rx`
它可能会捆绑整个库,您可能需要执行特定的导入,如
import {Observable} from `rxjs/Observable`
当您在analyser中检查您的包时,是否存在树抖动可能会很明显。
即使是在树摇动的情况下,一些依赖项(比如momenjs)也会变得很麻烦,因为它不是模块化的,在这些场景中,更改为模块化的替代项可能会有所帮助。
还有source-map-explorer已经mentioned in Angular docs