如果以下问题对您来说很幼稚,请原谅:
我经历了由 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/