首页 > 解决方案 > Angular9:构建有额外的编译步骤

问题描述

由于我将 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
...

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

标签: javascriptangularangular9angularbuild

解决方案


这是 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 触发 postinstall 命令。


推荐阅读