【问题标题】:Angular 10: postinstall script needed?Angular 10:需要安装后脚本吗?
【发布时间】:2020-11-13 06:40:20
【问题描述】:

这可能是一个澄清问题:

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

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

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

但是,我在 official docs 中找不到任何关于省略此安装后脚本的内容...

这是一种可能加快构建时间的方法吗?

【问题讨论】:

标签: angular ivy post-install


【解决方案1】:

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

根据Angular glossaryngcc所做的是:

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

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

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

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

【讨论】:

  • 在我们的例子中,它在管道中,所以每次构建应用程序都需要大约 15 分钟(包括单元测试、ES5 构建等)。
【解决方案2】:

我认为不再需要这个了。

https://angular.io/guide/ivy

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

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

{
  "scripts": {
    "postinstall": "ngcc"
  }
}

【讨论】:

    猜你喜欢
    • 2019-12-22
    • 1970-01-01
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多