【发布时间】:2021-05-02 10:17:05
【问题描述】:
我有一个我们公司使用的工具包库。目前,我们正在将所有项目迁移到angular 11。所以很自然,我们也将我们的工具包库更新到了 Angular 11。
从 ng11 开始,Ivy 是默认引擎,我认为打开它是个好主意,所以我们的应用程序不需要使用 ngcc 编译它。所以我在我们的package.json中设置了这个:
"angularCompilerOptions": { "enableIvy": true },
但是当我尝试推送它时,我看到了错误:
npm 错误! my-lib@0.0.1 prepublishOnly: 节点 --eval "console.error('错误:试图发布一个已经被 常春藤编译。这是不允许的。\n请删除并重建 包,无需使用 Ivy 编译,然后尝试 发布。\n')" && 退出 1
似乎这个错误生成到 dist 编译代码中,如果我使用 Ivy 编译,它会阻止我推送到我们的关系。
在此处找到此报告并提供官方答案:
https://github.com/angular/angular/issues/37973
我的问题是:为什么会这样?为什么不建议用 Ivy 发布呢?这样,lib 使用 ViewEngine 编译,然后作为依赖项安装(在我们的 angular 11 项目中),仅使用 ngcc 预编译以与 Ivy 兼容,这对我来说似乎是一个不好的做法。
我觉得我在这里误解了一些东西,有人可以向我解释一下吗?
【问题讨论】:
-
老实说,我只是在他们关闭问题之前阅读,并且看到了关于 workaroudns 的最后几个 cmets,并没有阅读所有这些,因此这避免了我的注意力。谢谢您 - 如果您将其提取为答案,我会很乐意接受。