在使用另一个版本构建的应用程序中使用使用一个版本 Angular 构建的 angular 库是否安全?

Is it safe to use angular libraries built with one version of Angular in an application built with another version?

例如,我有一个使用 Angular v6 cli 构建的 angular 应用程序,它依赖于使用 Angular v8 cli 构建的 Angular 库。将此库用作依赖项是否安全,或者应用程序是否应该更新到 angular v8?

相反场景的相同问题。如果我的应用程序是使用 angular v8 cli 构建的,并且它依赖于使用 Angular v6 cli 构建的 Angular 库,是否应该更新 Angular 库以使用 Angularv8 客户端?

好吧,如果它编译并且你的代码中有测试,我认为它在功能方面是完全安全的。但是你必须为你的代码编写测试,以确保你需要的库中的所有功能都正常工作(你不需要测试库,当然,只需要将它的功能集成到你的组件中)。

从安全的角度来看,您对过时的 nano 依赖关系持开放态度,过时的库中没有纠正安全漏洞(这是 javascript 项目的癌症:nano依赖项)。

使用比您项目中更高版本的 angular 构建的库可能有效,也可能无效。如果库的作者将版本指定为 peerDependency 之类的 @angular/core:^8.0 并且您正尝试在 @angular 6 项目中使用它,您将在 npm install 并且在运行时可能会遇到问题(如果作者有真正的理由将该版本指定为对等依赖项)。

作者只是让对等依赖项保持最新的情况并不少见,因此在许多情况下可以在构建期间忽略警告消息并使用库。但是要以可靠的方式做到这一点,您必须进行一系列测试,涵盖您正在使用的该库中的功能。