Angular 打包角度库以支持角度8、9和10的正确方法
随着Angular 10的发布,我正在将用于构建库+演示应用程序的Angular版本更新到版本10 一般来说,这进展顺利,并且库与Angular的早期版本保持兼容,但本版本的情况似乎并非如此(基于Angular 9构建的早期版本适用于Angular 8) 输出类型脚本定义文件包括:Angular 打包角度库以支持角度8、9和10的正确方法,angular,typescript,angular-library,ng-packagr,Angular,Typescript,Angular Library,Ng Packagr,随着Angular 10的发布,我正在将用于构建库+演示应用程序的Angular版本更新到版本10 一般来说,这进展顺利,并且库与Angular的早期版本保持兼容,但本版本的情况似乎并非如此(基于Angular 9构建的早期版本适用于Angular 8) 输出类型脚本定义文件包括: import * as ɵngcc0 from '@angular/core'; ... static ɵfac: ɵngcc0.ɵɵFactoryDef<QrCodeComponent, never>
import * as ɵngcc0 from '@angular/core';
...
static ɵfac: ɵngcc0.ɵɵFactoryDef<QrCodeComponent, never>;
static ɵcmp: ɵngcc0.ɵɵComponentDefWithMeta<QrCodeComponent, "qr-code", never, { "value": "value"; "size": "size"; "errorCorrectionLevel": "errorCorrectionLevel"; }, {}, never, never>;
我使用以下工具创建了test angular 8项目:
npx @angular/cli@^8 new ngqrcode-ng8-test
您可以在此处看到我对该更改的WIP请求:
注意:我的编译器选项中已经有enableIvy false:
"angularCompilerOptions": {
"enableIvy": false
}
有没有一种方法可以使用Angular v10构建一个库,以保持与Angular v8的兼容性?Angular 10有两大突破性变化:
tslib
的更改通过将其更改为模块的直接依赖项而不是peerDependency
来实现-最终您的捆绑包中会同时包含tslib v1和v2,但这是意料之中的,以及他们进行此迁移的原因。一般来说,类型脚本的更改可能有问题,但我不认为这是原因。我想你可能是对的,但这是不可能的。我也在努力跟上角度的突破性变化。这种不兼容基本上是由于角度编译的内部工作方式发生了变化。因此,因为这可能是一个突破性的改变,所以没有办法保持向后兼容性。使用NG9构建的库更有可能用于未来版本。
"angularCompilerOptions": {
"enableIvy": false
}