Angular9:构建有额外的编译步骤

Angular9: build has extra step of compiling

自从我将 Angular8 项目更新为 Angular9 后,我可以看到一个额外的编译为 esm 的步骤。 这使我的构建时间延长了 1 分钟。

看起来像这样:

Compiling @angular/animations : es2015 as esm2015
Compiling @angular/cdk/keycodes : es2015 as esm2015
Compiling @angular/compiler/testing : es2015 as esm2015
Compiling @angular/core : es2015 as esm2015
Compiling @angular/cdk/collections : es2015 as esm2015
Compiling @angular/common : es2015 as esm2015
...

有人知道这一步是做什么用的吗? 是否有禁用它的选项?

这是 ngcc 将所有模块编译成 ivy 兼容代码。

您不能删除它,因为 Ivy 需要它才能运行。 但是你可以做一次,这会将文件生成到 node_modules 中,你不必再做一次,直到添加任何新的依赖项或更新 angular.

将此添加到您的 package.json scripts 部分

"scripts": {
  ...
  "postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points"
  ...
}

然后 运行 npm installyarn install 触发安装后命令。