【问题标题】:Publish Angular 12 library built with ivy to npm将使用 ivy 构建的 Angular 12 库发布到 npm
【发布时间】:2022-01-07 21:34:09
【问题描述】:

我需要将库升级到 angular 12...我已经完成了。 用ivy全编译模式编译这个库成功了,但是发现不能把这样编译的库发布到npm???

按照许多帖子中的建议设置 "enableIvy":false 和 "compilationMode": "partial" 会引发错误

在旧版 View Engine 编译模式下使用 Angular 进行编译。 Angular 结构同时加载和异步加载

这个错误好像没有明确的解决办法??

在这种环境下,人们应该如何保持最新的 Angular 版本并将他们的库发布到 npm?

【问题讨论】:

  • 有更多关于为什么ViewEngine的信息-this GitHub issue comment需要编译库。 Tl;dr 向前兼容性。
  • 我能找到或读到的所有内容都是 Angular 12 弃用了 ViewEngine 编译……那是什么?这种方法似乎半生不熟,被依赖于稳定系统才能完成工作的开发人员所抛弃。升级后我需要能够将此代码构建到 NPM。我敢肯定还有其他人在同一条船上创建库,我不明白为什么他们会在没有明确的方法来实现为 NPM 构建库的情况下这样做
  • Based on this blog post,您的配置似乎不正确。 "compilationMode": "partial" 仅在 "enableIvy": "true" 时有效。 Angular 文档确认,"for publishing to npm use the partial-Ivy format"、"enableIvy": "true" 和 "compilationMode": "partial" 似乎是 Angular 12 之后的发展方向。
  • ...至少如果您没有任何 ViewEngine 依赖项并且您不需要支持 Angular 11。请注意 ViewEngine 在 Angular 12 中已被弃用但未删除直到 Angular 13。

标签: angular npm angular12 angular-ivy


【解决方案1】:

对我来说设置 "enableIvy":false 和 "compilationMode": "partial" 如许多帖子中所建议的那样会引发许多递归错误...我不确定为什么 "compilationMode": "partial" 与 "compilationMode" 的工作方式不同:“满”。

我发现我使用 public.api 在我的库中不恰当地导入了一个组件
public/api 只能在库外部用于导入...在库内部我确保我正在直接导入组件,并且所有内容都在 "compilationMode": "partial" 下开始正确编译

【讨论】:

    猜你喜欢
    • 2019-06-25
    • 2017-03-08
    • 2019-11-09
    • 2015-02-04
    • 2012-12-22
    • 2016-02-29
    • 2014-01-31
    • 1970-01-01
    相关资源
    最近更新 更多