javascript - Angular CLI 8 和 webpack 生成优化后的 main.js 文件,该文件大于未优化的代码库
问题描述
我们是一个小型开发团队,为客户开发一个相当典型的 ERP 系统。我们创建了数百个小型输入表单、网格、子表单等,所以现在我们有大约 1600 个文件(.ts、.html),总大小约为 6 MB。
我们从默认的 SPA .NET Core 2.2 + Angular 6(升级到 8)Visual Studio 模板开始,它运行良好。除了最近我们注意到我们的构建时间变得更慢并且我们的 dist 包增长到荒谬的大小。
现在我们的构建时间大约是 25 分钟,并且大部分时间都被 ModuleConcatenationPlugin 消耗(它似乎使用 CPU 的效率有点低,永远不会超过 15%)。而且——惊喜!- main.js 为 20 MB(而 vendor.js 小于 3 MB)。
优化肯定有问题。为什么我们的 6 MB TypeScript 代码库(有很多注释和空格等等)会“优化”到 20 MB 文件?
如您所见, main.js 看起来很干净;没有外来代码,只有我们自己的 /src ~1600 个文件。
我们如何解决这个问题,以便我们的代码得到适当的优化(如果可能的话,减少构建时间)?
我们没有做任何极端或奇特的事情——这似乎是一个正常的用例;每个 ERP 系统都会有数百个小表格;那么为什么开箱即用的优化不能正常工作呢?
解决方案
推荐阅读
- ffmpeg - 错误:成员访问不完整类型“AVFormatInternal”
- python - ValueError:当我尝试执行 fit_generator() 时,无法将输入数组从形状 (97,2048) 广播到形状 (97)
- r - 如何在 R 中下载“Afinn”和“NRC”词典?
- html - 在 angularjs 的选择选项中设置值
- vue.js - 在正在观看 vuex 状态的观察者中切换 GSAP 动画的问题
- azure-devops - Azure DevOps:由 git commit 触发的错误管道
- c++ - 如果使用 /MTd,则在 boost::interprocess::shared_memory_object 中崩溃
- c - 以下代码段的输出是什么?为什么?
- javascript - 调用 Map 对象的 Array 键
- datetime - AbbreviatedMonthNames 在 .NET Core 3.1 中无法正常工作