2

这可能是一个澄清问题:

根据 Ivy 的文档(从 Angular 9 开始),我们需要在postinstallpackage.json 中添加一个脚本,如下所示:

"postinstall": "ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points"

然而,由于我们试图改善我们的构建时间(自 Ivy 以来这需要很长时间),我在entwickler.de上看到了一篇文章(不幸的是德语),提到自 Angular 9.1 以来我们不再需要这个安装后脚本了.

但是,我在官方文档中找不到有关省略此安装后脚本的任何内容...

这会是一种潜在地加快构建时间的方法吗?

4

2 回答 2

2

postinstall仅在 a 运行后npm install运行,因此删除它不会加快构建时间(可能npm install每次运行的构建管道除外)。

根据Angular 词汇表ngcc它的作用是:

角度兼容性编译器。如果您使用 Ivy 构建应用程序,但它依赖于未使用 Ivy 编译的库,则 CLI 使用 ngcc 自动更新依赖库以使用 Ivy。

因此,您仍应将其保留为postinstall脚本。不过,我不确定的是--create-ivy-entry-points标志,因为根据Angular 文档本身

不要使用 --create-ivy-entry-points ,因为这会导致 Node 无法正确解析 Ivy 版本的包。

但那句话也属于 Angular Shell 和 Universal 的标题。当我升级到 Angular 10 时它并没有删除标志,所以我倾向于认为它仍然是需要的。

于 2020-07-23T14:10:16.383 回答
1

我认为不再需要这个了。

https://angular.io/guide/ivy

在版本 9 中,用于 App shell 和 Angular Universal 的服务器构建器默认启用了 bundleDependencies 选项。如果您选择退出捆绑依赖项,您将需要运行独立的 Angular 兼容性编译器 (ngcc)。这是必需的,否则 Node 将无法解析 Ivy 版本的包。

我认为它仅适用于 SSR 构建。现在只有ngcc了

{
  "scripts": {
    "postinstall": "ngcc"
  }
}
于 2020-10-19T20:42:51.543 回答