目录

dart pub upgrade

升级pub 工具 的一个命令之一。

$ dart pub upgrade [选项] [依赖项]

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

如果没有其他参数, dart pub upgrade 将获取当前工作目录中 pubspec.yaml 文件中列出的所有依赖项及其 传递依赖项 的最新版本。例如:

$ dart pub upgrade
依赖项已升级!

dart pub upgrade 升级依赖项版本时,它会写入一个锁文件,以确保 dart pub get 将使用这些依赖项的相同版本。对于 应用程序包 ,请将锁文件检入到源代码控制中;这确保应用程序对所有开发人员以及部署到生产环境时都使用完全相同的依赖项版本。对于常规包,不要检入锁文件,因为预期包可以与一系列依赖项版本一起工作。

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

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

升级特定依赖项

#

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

$ dart pub upgrade test args
依赖项已升级!

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

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

要升级特定依赖项及其所有传递依赖项到它们的最新版本,请使用 --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 会生成一个锁文件。如果缓存中某个依赖项的唯一版本恰好是旧版本,则离线 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 文件中的约束。