Angular 即使在包含--aot--Build optimizer--sourcemaps=false之后,角度生产构建仍然非常庞大

Angular 即使在包含--aot--Build optimizer--sourcemaps=false之后,角度生产构建仍然非常庞大,angular,Angular,我的应用程序中有近17个模块,与angular生成的模块相比,它们的大小可以忽略不计 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会生成这些块来处理一些内部内容,

我的应用程序中有近17个模块,与angular生成的模块相比,它们的大小可以忽略不计

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

我做错了什么

有没有办法减少这些尺寸


没有具体的缩小尺寸的方法。一个想法是懒散地加载模块以减少初始块

另一种方法是使用语法分析语块

在bundle Analyzer中,您可能会更深入地了解要优化什么以及如何优化。生成用于生产构建的JSON(
--aot--prod
)并使用bundle analyzer进行分析

此外,如果您尚未将所有软件包更新为最新版本,则树抖动可能不起作用,因此如果您导入以下内容:

import {Observable} from `rxjs/Rx`
它可能会捆绑整个库,您可能需要执行特定的导入,如

import {Observable} from `rxjs/Observable`
当你们在分析仪中检查你们的包裹时,是否有树木晃动可能是显而易见的

即使在树摇动的情况下,像momenjs这样的依赖性也会很麻烦,因为它不是模块化的,在这些场景中,更改为模块化的替代方案可能会有所帮助

还有一个问题已经解决了


我已经将我的项目升级到Angular v6…我简直不敢相信我们的budle大小已经从4MB降到1MB…Angular团队的Greak作业:)

ng build--prod--aot--build optimizer--sourcemaps=False当您使用
--prod标记的目的是什么尽可能优化您的捆绑包,其中一个优化是将供应商代码与应用程序代码合并在同一块中,即main.bundlesee