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 install
或 yarn install
触发安装后命令。
自从我将 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
触发安装后命令。