【问题标题】:Proper way to add Angular as a dependency to the npm librarie's list of dependencies将 Angular 作为依赖项添加到 npm 库的依赖项列表的正确方法
【发布时间】:2019-06-27 11:42:12
【问题描述】:

我在 NPM 上有这个小的 angular 包,我一直支持它在所有新版本的 angular 中可用。在我的 package.json 中,我已将 angular 添加到 peerDependencies 列表中,以确保它们始终存在于使用我的库的项目中:

  "peerDependencies": {
     "@angular/animations": "^7.x",
     "@angular/common": "^7.x",
     "@angular/core": "^7.x",
     "@angular/platform-browser": "^7.x",
     "rxjs": "^6.x",
     "typescript": ">=3.1.1 <3.3.0",
     "zone.js": "^0.8.x"
  }

但是随着 Angular 的每个新主要版本的发布,我的库的用户在执行npm install 时会不断遇到对等依赖项不匹配警​​告显示在控制台中,如下所示:

npm WARN ng2-go-top-button@7.1.0 requires a peer of @angular/animations@^7.x but none is installed. You must install peer dependencies yourself.

所以我的问题是:在我的库中将 angular 声明为依赖项的正确方法是什么,这样我就不必每次发布新的 angular 时都更新它?也许我根本不需要peerDependencies?但是如何确保使用我的库的项目始终拥有所有需要的库?提前致谢。

【问题讨论】:

  • 问题不在于如何安装对等体。我正在询问在我的库中声明这些依赖项的正确方法,以便我的用户不会每次都收到这些警告,新的角度已发布。
  • 我完全理解,但我的问题是,我什至必须让我的角度库依赖于这些 angular 依赖项?也许我可以删除它们,以免每次发布新的angular 主要版本时我的用户都会收到警告?但是在这种情况下,可能会出现有人安装了我的 lib,但是没有安装一些 angular 依赖项并且我的 lib 无法正常工作的情况。我想知道,这样做的常用方法是什么。
  • 是的,每次angular 发布时都会发生这种情况。每次我必须将其更改为7.x8.x 等。但我想打破这个圈子并找到另一种处理方法,这就是我问这个问题的原因。

标签: angular npm versioning


【解决方案1】:

好的,所以我自己想出了一个解决方案,因为我的问题的其他答案不太适合我的问题。

我本可以使用"*""^x.x" 版本控制定义angular 和其他依赖项,如上一个答案中所建议的那样,但这并不完全正确,因为并非总是angular 的最新版本完全兼容typescript 的最新版本,这就是为什么将依赖项版本设置为 "*" 可能会导致依赖于我的库的项目中断。

所以,最后,我决定保持我的peerDependencies 列表原样,并在每次发布新的angular 时更新它。这样,我的库将保留兼容的依赖项列表,不会中断开发,也不会导致依赖项目中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-21
    • 2016-02-18
    • 2014-12-29
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多