我正在尝试迁移这个库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 中的工具时,您的库将始终以正确的方式自动构建。
我通过对您发布的尝试进行一些更改,成功地实现了此功能。
截图如下:
The changes made were as follows:
的变化package.json
是无关紧要的。
enableIvy:false
意味着您的库不会使用 Ivy 渲染引擎构建(目前推荐用于库),但不会阻止您的库在启用 Ivy 的应用程序中使用。
值得注意的是,IVY 仍处于实验模式
annotateClosureCompiler: false
: 与这个问题有关https://github.com/angular/angular/pull/26738
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)