如何自动升级 Flutter 依赖
Posted
技术标签:
【中文标题】如何自动升级 Flutter 依赖【英文标题】:How to automatically upgrade Flutter dependencies 【发布时间】:2020-01-05 21:52:45 【问题描述】:我的 Flutter 项目在版本 ^2.0.1
上有一个依赖项 flutter_dotenv
,我想自动升级到新版本 ^2.0.2
。
我正在运行以下命令来升级它:
flutter pub upgrade
参考:Upgrading packages only
更新到所有依赖项的最新兼容版本 在 pubspec.yaml 文件中列出,使用升级命令:
颤振酒吧升级
然而似乎什么也没发生。 pubspec.yaml
没有改变,控制台输出也没有提到新版本(这就足够了)。
我的pubspec.yaml
看起来像这样:
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
flutter_dotenv: ^2.0.1
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter:
uses-material-design: true
【问题讨论】:
【参考方案1】:上述方法有效,但您可以使用此命令:
flutter pub upgrade --major-versions
它将更新您的所有依赖项。
还要检查“如何正确添加依赖项以避免“版本解决失败”错误
参考这个: https://***.com/a/67517680/13500457
我希望它能清除一切,编码愉快!
【讨论】:
这完全做到了! 这应该被接受为答案,谢谢!【参考方案2】:Flutter 会自动升级基于 semantic versioning 的非破坏性更改。您不希望自动进行重大更改。更新反映在 pubspec.lock
中,而不是 pubspec.yaml
。
有几个 IDE 插件可以帮助您更轻松地升级软件包,而不是在 pub.dev 上一一查找。
android 工作室
Flutter Pub Version Checker
此插件会突出显示您在 pubspec.yaml
中拥有的所有已过期的依赖项,以便您可以根据需要选择更新它们。
Visual Studio 代码
Pubspec Assist
这个插件使添加或更新依赖项变得超级简单,而无需转到pub.dev,但您仍然需要一次检查一个。
【讨论】:
我不同意“你不希望破坏性的改变是自动的”,我更倾向于认为“你不希望任何改变都是自动的”,基于此引入问题的可能性令人难以置信, WDYT? @DanielGomezRico,如果您不希望自动进行任何更改,则可以从版本号前面删除^
。但是,只要包开发人员遵循语义版本控制,留下^
就可以了,因为根据定义不会有重大更改。但即使有重大更改,您仍然会在发布应用程序之前对其进行测试。以我的经验,我只有一次经历,一个小的改变破坏了一些东西。 (这就是 Dart 2.8 本身。)
对我来说,痛苦来自一些 2 或 3 年前制作的旧项目,并且让它们重新编译非常可怕,找到哪个依赖项(有一个类似 30 个依赖项的列表)
***.com/a/66759292/13500457 当你使用你提到的方法时,当你移动光标并按 alt + enter 到所有依赖项时,它会花费一些时间,所以最好使用这个命令“flutter pub upgrade --major-versions ”也不会出现“由于 SDK 版本不兼容导致的版本解决错误”,因此请使用此链接了解详细信息。编码愉快!
@Suragch 很抱歉评论一个旧答案,但我有一个疑问:当您说“Flutter 根据语义版本控制自动升级非破坏性更改。”时,您的意思是,当您使用 flutter pub upgrade
命令?【参考方案3】:
运行pub
永远不会改变pubspec.yaml
。但是,它可能会解决与指定的“基本”版本不同的版本 - 前导 caret 允许 pub 解决:
保证向后兼容指定版本的所有版本的范围
签入pubspec.lock
文件,你可能会看到pub已经解决到version: "2.0.2"
【讨论】:
所以OP“如何自动升级Flutter依赖项”的答案是......没有办法? @adrianvintu 是的,请检查我自己的答案。【参考方案4】:声明依赖版本有两种方式:
-
Caret syntax - 它保证向后兼容性。示例:
^1.3.0
Traditional syntax - 极大的灵活性,多种控制选项。示例:>=1.2.3
行为类似于带有 Node.js 依赖管理的package.json
。
您选择在pubspec.yaml
中声明依赖项的方式将定义实际依赖项 将如何在pubspec.lock
文件中定义。
【讨论】:
以上是关于如何自动升级 Flutter 依赖的主要内容,如果未能解决你的问题,请参考以下文章
flutter sdk升级 kotlin升级 gradle升级 使用flutter upgrade命令 以及依赖的各项配置更新 呕心沥血 踩坑无数 专治疑难杂症
flutter sdk升级 kotlin升级 gradle升级 使用flutter upgrade命令 以及依赖的各项配置更新 呕心沥血 踩坑无数 专治疑难杂症