【问题标题】:Npm transitive dependency - not latest versionNpm 传递依赖 - 不是最新版本
【发布时间】:2020-06-08 02:16:19
【问题描述】:

在 Angular 项目中,我们有以下传递依赖:

  "dependencies": {
    ...
    "angular-fancybox-plus": "^1.0.3",

它给出了以下树(angular-fancybox-plus 最新版本是1.0.3):

`-- angular-fancybox-plus@1.0.3
  +-- fancybox-plus@1.3.8
  | `-- jquery@3.3.1  deduped
  `-- jquery@3.3.1

我的问题是:为什么解析的 jquery 版本是3.3.1 而不是3.4.1(即最新版本)?

angular-fancybox-plusfancybox-plus均不限制版本:

    "dependencies": {
        "jquery": ">=2.1.4",

【问题讨论】:

    标签: angular npm dependencies fancybox dependency-management


    【解决方案1】:

    由于>= 运算符,解析的版本是jquery 的最新版本。此运算符允许任何大于或等于指定包的包(优先于最近的包)。您可以通过转到https://semver.npmjs.com/ 并查看每个操作员的工作方式来进行测试:

    https://docs.npmjs.com/about-semantic-versioning

    如果您正在寻找特定版本的 jquery,您需要在您的 fancybox 包中手动使用 ~ 补丁符号或 ^ 次要版本符号来指定它。

    您的库具有 3.3.1 作为依赖项的原因是以前存在的 jquery 安装。由于这是一个满足 >=2.1.4 要求的依赖项,因此它将被标记为满足 angular-fancybox-plus 的依赖项要求并且不会更新。

    【讨论】:

    • 好的,但为什么不 jquery@3.4.1 呢? 3.3.1 不是最新版本
    • @naaka 可能是因为以前安装的现有 jquery 被用作重复数据删除。删除 node_modules 文件夹并执行全新安装,您应该会看到更新。
    • @naaka 注意:我刚刚用一个新的角度库进行了测试,并做了一个npm i angular-fancybox-plus 并收到了 3.4.1
    • 好的,谢谢,我会检查一下。这可能取决于 package-lock.json 指定 3.3.1 版本这一事实吗?
    • @naaka 是的,那是那里的缓存依赖要求。
    猜你喜欢
    • 2015-07-07
    • 2013-01-25
    • 2021-11-14
    • 2017-09-13
    • 1970-01-01
    • 2016-11-30
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多