内容

dart pub upgrade

升级pub 工具 的命令之一。

$ dart pub upgrade [options] [dependencies]

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

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

$ dart pub upgrade
Dependencies upgraded!

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

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

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

升级特定依赖项

#

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

$ dart pub upgrade test args
Dependencies upgraded!

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

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

要升级特定依赖项及其所有传递依赖项到其最新版本,请使用 --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

#

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