目录

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 命令的选项,请参阅全局选项

--[no-]offline

#

默认情况下,pub 连接到网络以检索托管包(--no-offline)。要改为使用缓存的包,请使用 --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 文件中的约束。