Angular 9 库构建失败

2023-12-07

我正在尝试迁移这个库https://github.com/flauc/angular2-notifications从 Angular 2+ 到 Angular 9。

最初的错误是关于ModuleWithProviders这已经成为一个通用类型,所以我修复了它。我也遇到了这里描述的错误https://github.com/angular/angular/issues/32352我用它修复了require('@angular/compiler-cli');现在我面临另一个错误:

../node_modules/@angular/common/common.d.ts:115:22 - 错误 NG6002: 出现在SimpleNotificationsModule的NgModule.imports中,但是 无法解析为 NgModule 类

我很难理解发生了什么,因为我以前从未构建过库,并且使用 gulp 构建似乎有点 hacky,因为这一行ngc = require('@angular/compiler-cli/src/main').main指的是不属于公共API的函数。

Edit:

按照评论中的想法(以及我自己的感觉),我尝试构建而不吞咽:

  • 创建了一个angular.json file
  • 分开index.ts into public_api.ts and simple-notifications.module.ts
  • 文件和文件夹结构进行了一些更改

但我仍然有同样的错误......

我的尝试:https://github.com/youkouleley/angular2-notifications我尝试用以下方法构建这个ng build, 中的脚本package.json尚未更新


EDIT 2

现在 Angular 9 已经发布了:

https://angular.io/guide/creating-libraries#publishing-your-library

不建议将 Ivy 库发布到 NPM 存储库。在将库发布到 NPM 之前,使用 --prod 标志构建它,该标志将使用称为 View Engine 的旧编译器和运行时而不是 Ivy。


EDIT

https://next.angular.io/guide/ivy

如果您是库作者,则应从版本 9 开始继续使用 View Engine 编译器。通过让所有库继续使用 View Engine,您将保持与使用 Ivy 的默认 v9 应用程序以及选择的应用程序的兼容性继续使用 View Engine。

See the 创建库有关如何编译或捆绑 Angular 库的更多信息的指南。当您使用集成到 Angular CLI 或 ng-packagr 中的工具时,您的库将始终以正确的方式自动构建。


我通过对您发布的尝试进行一些更改,成功地实现了此功能。 截图如下:

terminal output

The changes made were as follows: enter image description here

的变化package.json是无关紧要的。

enableIvy:false意味着您的库不会使用 Ivy 渲染引擎构建(目前推荐用于库),但不会阻止您的库在启用 Ivy 的应用程序中使用。

值得注意的是,IVY 仍处于实验模式

annotateClosureCompiler: false: 与这个问题有关https://github.com/angular/angular/pull/26738

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 9 库构建失败 的相关文章

随机推荐