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

Tim*_*Tim 5 angular angular-ivy

从 Angular 10 开始,我们在 Angular 库中设置了以下内容:

"angularCompilerOptions": {
  "enableIvy": false
}
Run Code Online (Sandbox Code Playgroud)

我现在尝试在升级到 Angular 12 时使用 Ivy 编译器。从我读到的所有内容来看,由于 Ivy 是默认编译器,删除enableIvy或设置它true应该会导致构建使用 Ivy。然而,通过这些更改,我仍然看到:

Compiling with Angular in legacy View Engine compilation mode.
Run Code Online (Sandbox Code Playgroud)

为了进行比较,我启动了一个新库,在那里我看到:

Compiling with Angular sources in Ivy full compilation mode.
Run Code Online (Sandbox Code Playgroud)

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

小智 6

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

  1. 在 tsconfig.json 中启用 ivy:
"angularCompilerOptions": {
  "enableIvy": true,
  "compilationMode": "partial"
}
Run Code Online (Sandbox Code Playgroud)

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

  1. 确保编译器看到并使用 tsconfig.json。在我看来,配置的 cli 参数在 Angular 12 中是必需的。我在 package.json 中更新了我的脚本:
"packagr": "ng-packagr -p ./src/lib/package.json -c ./src/tsconfig.json"
Run Code Online (Sandbox Code Playgroud)

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