在angular库的开发过程中,我使用ng build <lib> --watch动态构建这些库。安装是根据官方的Angular文档进行的,网址是:https://angular.io/guide/creating-libraries。我用npm link将这些库共同链接到我的项目中。我的angular 11项目是使用Ivy编译器编译的。我的库正在使用View Engine编译器。ng serve命令使用ngcc将常春藤特定的附加组件添加到库中(dist中的构建工件)
然而,这种方法不再适用于新的Angular 11项目。每次观察者重新构建该库时,由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中发生了什么变化导致了这个问题?
发布于 2021-04-16 20:52:27
我遇到了一个很好的解决方案,它在Angular 11上不起作用,然而,在降级到Angular 10之后,它起作用了。这个想法是将额外的构建配置添加到库中,以便在常春藤模式下编译。使用这种方法甚至ng build <lib> --watch也是可能的。
这里描述了解决方案:https://github.com/angular/angular/issues/33395#issuecomment-693306453
https://stackoverflow.com/questions/67024405
复制相似问题