在 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 的问题,分两步解决:
- 在 tsconfig.json 中启用 ivy:
"angularCompilerOptions": {
"enableIvy": true,
"compilationMode": "partial"
}
当您想将您的库发布到任何 npm 注册表时,compilationMode
是相关的。
- 确保编译器看到并使用 this tsconfig.json。
在我看来,配置的 cli 参数在 Angular 12 中是强制性的。
我在 package.json:
中更新了我的 scripts
"packagr": "ng-packagr -p ./src/lib/package.json -c ./src/tsconfig.json"
大多数示例中缺少 -c
(或 --config
)部分。
自 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 的问题,分两步解决:
- 在 tsconfig.json 中启用 ivy:
"angularCompilerOptions": {
"enableIvy": true,
"compilationMode": "partial"
}
当您想将您的库发布到任何 npm 注册表时,compilationMode
是相关的。
- 确保编译器看到并使用 this tsconfig.json。 在我看来,配置的 cli 参数在 Angular 12 中是强制性的。 我在 package.json: 中更新了我的 scripts
"packagr": "ng-packagr -p ./src/lib/package.json -c ./src/tsconfig.json"
大多数示例中缺少 -c
(或 --config
)部分。