【问题标题】:Angular ng build --watch seems to be broken in angular version 11Angular ng build --watch 似乎在 Angular 版本 11 中被破坏了
【发布时间】:2021-07-05 12:41:13
【问题描述】:

在开发 Angular 库期间,我使用 ng build <lib> --watch 即时构建库。根据官方 Angular 文档进行设置:https://angular.io/guide/creating-libraries 我正在使用npm link 将库符号链接到我的项目中。我的 Angular 11 项目是使用 Ivy 编译器编译的。我的库正在使用 View Engine 编译器。 ng serve 命令使用 ngcc 将 Ivy 特定的附加功能添加到库中(dist 中的构建工件)

但是,这种方法不再适用于新的 Angular 11 项目。每当 watcher 重建库时,ng serve 服务的应用程序就会丢失轨道,需要重新启动。

我尝试将 angular 降级到 10.x 并同步库和应用程序项目中的 typescript 编译器版本。

重启项目的ng serve会导致:Tried to overwrite *.component.d.ts.__ivy_ngcc_bak with an ngcc back up file, which is disallowed.一直。在这种情况下,唯一有帮助的是重新启动 ng build <lib> --watch 进程。

在我看来,Ivy 的边缘状态已经彻底破坏了使用 npm link 的库开发体验。

有没有人知道 Angular 11 中的哪些变化导致了这个问题?

【问题讨论】:

  • 添加 out 参数可能是一个修复它。 ng build --watch -o dist/。试一试吧!谢谢你:)
  • 似乎 -o (--output-path) 是最近才添加的。我的库项目仍然是 angular-cli 版本 10.2.3,不幸的是不支持 -o 标志。

标签: angular angular-cli ng-packagr angular-ivy


【解决方案1】:

我遇到了一个不错的解决方案,它不适用于 Angular 11,但是,在降级到 Angular 10 之后,它可以工作。这个想法是向库中添加一个额外的构建配置,以便在 Ivy 模式下进行编译。甚至ng build <lib> --watch 也可以使用这种方法。

这里描述了解决方案:https://github.com/angular/angular/issues/33395#issuecomment-693306453

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-07
    • 2020-11-13
    • 2020-02-22
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多