dart pub upgrade
Upgrade 是 pub 工具的命令之一。
$ 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-versions
和 dart pub upgrade --tighten
将更新所有工作区 pubspec.yaml
文件中的约束。
除非另有说明,本网站上的文档反映的是 Dart 3.6.0 版本。页面最后更新于 2024-12-10。 查看源代码 或 报告问题。