javascript - 在项目中添加 angular postinstall "ngcc..."脚本的原因是什么?

标签 javascript angular

如果以下问题对您来说很幼稚,请原谅:
我经历了由 angular 9 开发的多个项目,其中大多数在 package.json 中有以下行作为 posinstall 脚本。"postinstall": "ngcc --properties es2015 es5 browser module main --first-only --create-ivy-entry-points"我阅读了 Angular 文档,根据我的理解,我们添加了“ngcc”来验证安装的包是否与 Ivy 兼容。
同样根据他们的建议,我们不应使用“--create-ivy-entry-points”标志,因为这将导致 Node 无法正确解析 Ivy 版本的软件包。
问题:有人可以解释添加其他标志和属性的原因,例如:“--properties es2015 es5 browser module main --first-only --create-ivy-entry-points”在安装后脚本中的 ngcc 之后。
提前致谢!

最佳答案

实际上,ngcc 的工作不是包验证。它采用非 Ivy 库并生成 Ivy 可以理解的文件。我相信 ngtsc 生成的 Ivy 指令(除了与 ngc 生成的代码不向后兼容之外)还不稳定,所以现在的规则是继续使用 View Engine - ngc for library。这就是 ngcc 如何适应图片,使用 View Engine 代码处理库。
关于问题,ngcc's source有他们每个人的文档:

  • 如果没有 properties给出标志后,ngcc 将处理所有包格式(fesm2015、fesm5、es2015、esm2015、esm5、main、模块),这可能不是我们想要的。
  • 旗帜first-only告诉 ngcc 处理它在 package.json 中找到的第一个属性,否则它将处理上面列出的所有条目。
  • create-ivy-entry-points将告诉 ngcc 为 Ivy 生成的条目创建新属性,而不是覆盖前一个。

  • 我认为有些人使用 postinstall 来优化流程。我实际上是将它添加到我工作的 Angular 应用程序中,以便在我们的 CI 管道中缓存 Ivy-ready node_modules。

    关于javascript - 在项目中添加 angular postinstall "ngcc..."脚本的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62636918/

    相关文章:

    javascript - Angular2 @ContentChildren 未填充在父 <ng-content> 中

    javascript - 如何在 Rails 中使用 gmaps

    javascript - 以编程方式检索页面上的 javascript 错误计数

    javascript - Iframe 背景视频不适用于某些 Iphone

    angular - 标签在推送后消失 ionic 3

    angular - 空注入(inject)器错误 : No provider for FormBuilder

    javascript - 隐藏/显示 ngFor 内的单个或特定按钮

    javascript - 如何使随机文本在悬停在按钮上时旋转,就像 google "I am feeling lucky button"一样,谁能帮我?

    javascript - 如果代理遇到异常,Ext JS 4.0 取消存储加载

    javascript - 将变量从index.html发送到app.component.ts