目录

dart pub outdated

_已过期_ 是 pub 工具 的一个命令。

$ dart pub outdated [options]

使用 dart pub outdated 来识别过期的 包依赖项 并获取有关如何更新它们的建议。 依赖项管理最佳实践 包括使用最新的稳定包版本,以便您可以获得最新的错误修复和改进。

概述

#

以下是如何使用 dart pub outdated 来帮助您更新您拥有的包(无论是应用程序还是普通包)的依赖项:

  1. 如果您的包没有将 pubspec.lock 文件检入到源代码管理中,请在包的顶级目录(包含您包的 pubspec.yaml 文件的目录)中 运行 dart pub get 。
  2. 运行 dart pub outdated 来识别哪些包依赖项已过期。记下受影响的包,以便稍后您可以测试使用它们的代码的行为。
  3. 按照 dart pub outdated 的建议更新包。一些更新可能只需要运行 dart pub upgrade 。其他更新可能需要在运行 dart pub upgrade 之前更新 pubspec.yaml 。
  4. 运行 dart pub outdated 以确认您正在使用最新的兼容包版本。
  5. 测试 您的包以确认它仍然按预期工作。

由于 传递依赖项 ,您可能仍然有过期依赖项。如果您想确定原因,请尝试运行 dart pub deps 并搜索输出中每个过期包的名称。

示例

#

这是一个在具有多个过期依赖项的示例上运行 dart pub outdated 的示例。三个依赖项( args 、 http 和 path )是直接的,一个依赖项是传递的( meta )。如下例所示,当您在命令行上运行 dart pub outdated 时,它默认情况下会对输出进行着色。

$ dart pub outdated

Package Name  Current    Upgradable  Resolvable  Latest

direct dependencies:
args          1.4.4      1.6.0       1.6.0       1.6.0
http          0.11.3+17  0.11.3+17   0.12.1      0.12.1  
path          1.6.2      1.6.2       1.6.2       1.7.0   

dev_dependencies: all up-to-date

transitive dependencies:
meta          1.1.6      1.1.6       1.1.6       1.1.8   

transitive dev_dependencies: all up-to-date

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml.

可解析 列显示您可以为每个过期的依赖项升级到的版本。您可以通过查找具有 非红色值 的 最左列 来获取更多信息。例如, args 可 升级 到 1.6.0, http 可 解析 到 0.12.1。 path 和 meta 包不是最新版本,但考虑到所有其他依赖项,它们是最新的 可解析 版本。

要修复第一个依赖项( args ),它被列为可升级的,您只需要运行 dart pub upgrade :

$ dart pub upgrade
正在解析依赖项...
> args 1.6.0 (之前为 1.4.4)
  ...
已更改 1 个依赖项!

要修复第二个依赖项( http ),它被列为可解析的,您可以更改 pubspec 的 http 条目以使用 可解析 列中的版本(或兼容的更高版本)。在 脱字符语法 中,即 ^0.12.1 。以下是 pubspec.yaml 的差异:

-  http: ^0.11.0
+  http: ^0.12.1

编辑 pubspec.yaml 后,运行 dart pub upgrade 以更新 pubspec.lock 文件。然后,您可以运行 dart pub outdated 以确认您已进行所有必要的更改。在此示例中,由于其他依赖项确定的约束, path 和 meta 包仍然已过期:

$ dart pub upgrade
...
$ dart pub outdated
包名称  当前版本  可升级版本  可解析版本  最新版本

直接依赖项:
path          1.6.2    1.6.2       1.6.2       1.7.0

dev_dependencies:全部是最新的

传递依赖项:
meta          1.1.6    1.1.6       1.1.6       1.1.8

传递 dev_dependencies:全部是最新的

所有依赖项均为最新的可解析版本。
虽然有更新的版本可用,但它们并不相互兼容。

要查看这些包为何过期,您可以运行 dart pub deps 并查找对这些包的依赖项:

$ dart pub deps -s list
...
dependencies:
...
- terminal_tools 0.1.0
  - path 1.6.2
  - meta 1.1.6
...

如前述输出所示,此包依赖于 terminal_tools 包,该包依赖于旧版本的 path 和 meta 。一旦 terminal_tools 包更新,就应该可以更新此包。

输出列

#

dart pub outdated 的输出包含每个过期依赖项的四列版本信息。以下是 示例 输出中显示四列版本的部分内容:当前版本、可升级版本、可解析版本和最新版本。

Package Name  Current    Upgradable  Resolvable  Latest

direct dependencies:
args          1.4.4      1.6.0       1.6.0       1.6.0
http          0.11.3+17  0.11.3+17   0.12.1      0.12.1  
path          1.6.2      1.6.2       1.6.2       1.7.0   

dev_dependencies: all up-to-date

transitive dependencies:
meta          1.1.6      1.1.6       1.1.6       1.1.8
当前版本
包中使用的版本,记录在 pubspec.lock 中。如果包不在 pubspec.lock 中,则值为 - 。
可升级版本
pubspec.yaml 文件允许的最新版本。这是 dart pub upgrade 解析到的版本。如果 当前版本 列中的值为 - ,则值为 - 。
可解析版本
与所有其他依赖项结合时可以解析的最新版本。如果 pubspec.yaml 中的所有版本约束都是无界的,则此版本对应于 dart pub upgrade 提供的版本。值为 - 表示不需要该包。
最新版本
可用的包的最新版本,除非您使用 --prereleases 选项,否则不包括预发行版本。

例如,假设您的应用程序依赖于 foo 和 bar 包,但 bar 的最新版本只允许使用较旧的 foo 主版本。结果是 foo 的最新 可解析 版本与 foo 的 最新 版本不同。

编辑 pubspec.yaml 文件时,通常会更新 dependencies 和 dev_dependencies 部分,以便每个包都使用 可解析版本 列中的版本。

选项

#

有关适用于所有 pub 命令的选项,请参阅 全局选项 。

--[no-]dependency-overrides

#

默认情况下,在解析包约束时会考虑 dependency_overrides (--dependency-overrides)。要忽略覆盖,请使用 --no-dependency_overrides 。

--[no-]dev-dependencies

#

默认情况下,在解析包约束时会考虑 开发依赖项 (--dev-dependencies)。要忽略开发依赖项,请使用 --no-dev-dependencies 。

--json

#

以 JSON 格式生成输出。

--[no-]prereleases

#

默认情况下,在确定最后一个包版本时会包含预发行版本 (--prereleases)。要忽略预发行版本,请使用 --no-prereleases 。

--[no-]transitive

#

默认情况下,不包括 传递依赖项 作为输出的一部分 (--no-transitive)。要包含传递依赖项,请使用 --transitive 。

--[no-]up-to-date

#

默认情况下,不包括处于最新版本的依赖项 (--no-up-to-date)。要包含最新的依赖项,请使用 --up-to-date 。

在工作区中

#

在 Pub 工作区 中, dart pub outdated 列出所有依赖项