跳到主要内容

dart pub upgrade

Upgradepub 工具的命令之一。

$ dart pub upgrade [options] [dependencies]

dart pub get 一样,dart pub upgrade 获取依赖项。不同之处在于 dart pub upgrade 忽略任何现有的 lockfile,以便 pub 可以获取所有依赖项的最新版本。一个相关的命令是 dart pub outdated,您可以运行它来查找过时的依赖项。

在没有任何其他参数的情况下,dart pub upgrade 获取当前工作目录中 pubspec.yaml 文件中列出的所有依赖项以及它们的 传递依赖项的最新版本。例如

$ dart pub upgrade
Dependencies upgraded!

dart pub upgrade 升级依赖项版本时,它会写入一个 lockfile,以确保 dart pub get 将使用相同版本的这些依赖项。对于 应用程序包,将 lockfile 检入到源代码控制;这确保了应用程序对于所有开发人员以及部署到生产环境时都具有完全相同的依赖项版本。对于常规包,请勿检入 lockfile,因为包应在一定范围的依赖项版本下工作。

如果 lockfile 已存在,dart pub upgrade 将忽略它并从头开始生成一个新的 lockfile,使用所有依赖项的最新版本。

有关包解析和系统包缓存的更多信息,请参阅 dart pub get 文档

升级特定依赖项

#

您可以告诉 dart pub upgrade 将特定依赖项升级到最新版本,同时尽可能保持其余依赖项不变。例如

$ dart pub upgrade test args
Dependencies upgraded!

通常,不会升级其他依赖项;它们保持在 lockfile 中锁定的版本。但是,如果请求的升级导致与这些锁定版本不兼容,则会选择性地解锁它们,直到找到兼容的版本集。

这意味着升级特定依赖项默认情况下不会升级其传递依赖项。

要将特定依赖项及其所有传递依赖项升级到最新版本,请使用 --unlock-transitive 标志。

$ dart pub upgrade --unlock-transitive test args

获取新的依赖项

#

如果在运行 dart pub upgrade 之前将依赖项添加到 pubspec,它将获取新的依赖项及其任何传递依赖项。这与 dart pub get 具有相同的行为。

移除依赖项

#

如果在运行 dart pub upgrade 之前从 pubspec 中删除了依赖项,则该依赖项将不再可用于导入。已删除依赖项的任何传递依赖项也会被删除,只要没有剩余的直接依赖项也依赖于它们。这与 dart pub get 具有相同的行为。

离线升级

#

如果您没有网络访问权限,您仍然可以运行 dart pub upgrade。由于 pub 将包下载到系统上所有包共享的中央缓存中,因此它通常可以找到以前下载的包,而无需使用网络。

但是,默认情况下,如果您有任何托管依赖项,dart pub upgrade 会尝试联机,以便 pub 可以检测到较新版本的依赖项。如果您不希望 pub 这样做,请传递 --offline 标志。在离线模式下,pub 仅在您的本地包缓存中查找,尝试从已有的内容中找到一组与您的包一起使用的版本。

请记住,pub 会生成一个 lockfile。如果您缓存中某个依赖项的唯一版本恰好是旧版本,则离线 dart pub upgrade 会将您的应用程序锁定到该旧版本。下次您在线时,您可能需要再次运行 dart pub upgrade 以升级到更高版本。

选项

#

dart pub upgrade 命令支持 dart pub get 选项以及更多选项。对于适用于所有 pub 命令的选项,请参阅 Global options

--[no-]offline

#

默认情况下,pub 连接到网络以检索托管包 (--no-offline)。要改为使用缓存的包,请使用 --offline。有关详细信息,请参阅 Getting while offline

--dry-run-n

#

报告将要更改的依赖项,但不进行更改。如果您想在进行更新之前分析更新,这将非常有用。

--[no-]precompile

#

默认情况下,pub 预编译直接依赖项中的可执行文件 (--precompile)。要阻止预编译,请使用 --no-precompile

--major-versions

#

获取 dart pub outdated 列为可解析的包,忽略 pubspec.yaml 文件中的任何上限约束。还会使用新约束更新 pubspec.yaml

要检查将升级哪些依赖项,您可以使用 dart pub upgrade --major-versions --dry-run

--tighten

#

更新 pubspec.yaml 中依赖项的下限以匹配已解析的版本,并返回已更改约束的列表。可以应用于特定依赖项

--unlock-transitive

#

当与要解锁的包列表一起使用时,首先计算这些包的依赖项的传递闭包(在当前解析中),然后解锁所有这些包。

在工作区中

#

Pub 工作区 中,dart pub upgrade 将升级来自所有工作区包的共享解析中的所有依赖项。

dart pub upgrade --major-versionsdart pub upgrade --tighten 将更新所有工作区 pubspec.yaml 文件中的约束。