在 Angular 12 中禁用旧版 View Engine 编译模式

Disabling legacy View Engine compilation mode in Angular 12

自 Angular 10 以来,我们在 angular 库中设置了以下内容:

"angularCompilerOptions": {
  "enableIvy": false
}

我现在正在尝试使用 Ivy 编译器,因为我们升级到 Angular12。从我读过的所有内容来看,由于 Ivy 是默认设置,删除 enableIvy 或将其设置为 true 应该会导致构建使用 Ivy。但是,通过这些更改中的任何一个,我仍然看到:

Compiling with Angular in legacy View Engine compilation mode.

为了对比,我新建了一个库,看到了:

Compiling with Angular sources in Ivy full compilation mode.

我不知道还有什么不同导致 Angular 仍然使用 View Engine。我还应该寻找什么?

遇到 Angular 12 和 packagr 的问题,分两步解决:

  1. 在 tsconfig.json 中启用 ivy:
"angularCompilerOptions": {
  "enableIvy": true,
  "compilationMode": "partial"
}

当您想将您的库发布到任何 npm 注册表时,compilationMode 是相关的。

  1. 确保编译器看到并使用 this tsconfig.json。 在我看来,配置的 cli 参数在 Angular 12 中是强制性的。 我在 package.json:
  2. 中更新了我的 scripts
"packagr": "ng-packagr -p ./src/lib/package.json -c ./src/tsconfig.json"

大多数示例中缺少 -c(或 --config)部分。