【发布时间】:2020-05-26 08:52:47
【问题描述】:
我刚刚将我的项目升级到 Angular 9,我注意到的第一件事是我的 CI 中的构建时间显着增加(从 2 分钟到 4 分钟)。
分析日志,每次执行测试或构建时,CLI 都会执行预编译。 这是由于new Ivy architecture,但据我了解,这种编译应该只发生在与 Ivy 不兼容的代码上。
那么为什么我会在我的构建中看到很多 Compiling @angular/common : es2015 as esm2015(主要来自 @angular 包)? Angular 代码本身不应该与 Ivy 兼容吗?
注意:这也发生在一个新项目中(只有几个库)。
更新 所有需要构建的命令都会发生这种情况。例如:
ng test --code-coverage=true --watch=false --browsers=ChromeHeadleng b -c=staging --aot
更新 2
我正在添加我的构建进行比较:pre angular 9 和 angular 9 migration 之后(构建仍然失败,但我们可以使用单元测试作为参考,总执行时间从 ~2 分钟到 ~4 分钟)
【问题讨论】:
-
您使用什么命令/参数来运行/构建您的项目?
-
Angular 编译为 es2015。由于您的构建使用的是 esm2015,因此必须重新编译。
-
@RoddyoftheFrozenPeas 但即使是使用 CLI 初始化的新项目也会有这种行为。是否可以更改构建目标以避免重新编译?
-
我的意思是,我推测您使用 esm2015 是有原因的,但如果您在项目中改为使用 es2015,它应该使用预编译的二进制文件。
标签: angular typescript ecmascript-6 angular-cli angular9