为什么pub升级不升级包并只显示它们

时间:2014-10-02 11:32:16

标签: dart dart-pub

我有:

>pub upgrade
Resolving dependencies... (6.2s)
  analyzer 0.18.0 (9 newer versions available)
  angular 0.14.0
  args 0.10.0+2 (5 newer versions available)
  barback 0.13.0 (14 newer versions available)
  bootjack 0.6.5+2
  browser 0.10.0+2
  code_transformers 0.1.6 (5 newer versions available)
  collection 0.9.4 (1 newer version available)
  di 2.0.2 (3 newer versions available)
  dquery 0.7.0+4
  html5lib 0.10.0 (4 newer versions available)
  intl 0.11.9
  logging 0.9.1+1 (2 newer versions available)
  path 1.3.0
  perf_api 0.0.9
  petitparser 1.2.2
  route_hierarchical 0.4.22 (1 newer version available)
  shadow_dom 0.10.0
  source_maps 0.9.4 (1 newer version available)
  source_span 1.0.0
  stack_trace 0.9.3+2 (6 newer versions available)
  typed_mock 0.0.4
  utf 0.9.0+1

所以我可以看到newer versions available,但是如何更新它们呢?

1 个答案:

答案 0 :(得分:2)

直接或传递依赖项具有不允许使用较新版本的版本约束。

在Dart中,只能在一个版本中导入包 所有依赖关系需要就一个版本达成一致。

据我所知,在Java中,即使包A在版本中导入B,包C也可以导入包C版本1.0和包B 2.0。
这在Dart中是不可能的,整个应用程序必须使用相同版本的B

要了解阻止升级的原因,我通常会在pubspec.yaml中添加一个强制执行新版本的约束。
然后运行pub upgrade会显示哪个依赖项阻止升级。

添加依赖关系约束

dependencies:
  html5lib: '>= 0.10.0'<

运行

pub upgrade

检查结果

这通常需要多次迭代才能找出罪魁祸首。

pub deps -s list

显示了所有依赖关系和约束的有用概述

您还可以向dependency_overrides添加pubspec.yaml

dependency_overrides:
  html5lib: '>= 0.10.0'

只是强制执行较新版本并忽略可能的不兼容性 (http://pub.dartlang.org不允许上传包含dependency_overrides的包。)