javascript - 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
...
有人知道这一步是做什么的吗?是否有任何选项可以禁用它?
解决方案
这是 ngcc 将所有模块编译成 ivy 兼容的代码。
您无法删除它,因为 Ivy 需要它才能发挥作用。但是您可以执行一次,这会将文件生成到 node_modules 中,并且在添加任何新的依赖项或更新 Angular 之前您不必再次执行此操作。
将此添加到您的package.json
scripts
部分
"scripts": {
...
"postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points"
...
}
然后运行npm install
或yarn install
触发 postinstall 命令。