是否有办法列出和更新pubspec.yaml中已超过主要版本的软件包? (例如method used in NPM)
例如当pubspec.yaml文件中带有built_value
的文件时:
dependencies:
flutter:
sdk: flutter
built_value: ^5.0.0
当built_value
更新到版本^6.2.0
时,有一种方法可以升级到主要版本,因此pubspec.yaml更新为:
dependencies:
flutter:
sdk: flutter
built_value: ^6.2.0
我知道我可以手动检查每个软件包的主要版本,但是如果它是自动的,那将很有帮助。
答案 0 :(得分:13)
在最新的Beta版本的Flutter(v1.17)中,现在有了pub
命令来检查过时的依赖关系,例如
$ flutter pub outdated -h
Analyze dependencies to find which ones can be upgraded.
This runs the "pub" tool in a Flutter context.
Usage: flutter pub outdated [<arguments...>]
-h, --help Print this usage information.
Run "flutter help" to see global options.
这给出如下输出:
$ flutter pub outdated
Dependencies Current Upgradable Resolvable Latest
path *1.6.4 *1.6.4 *1.6.4 1.7.0
permission_handler *4.4.0+hotfix.4 *4.4.0+hotfix.4 5.0.0+hotfix.3 5.0.0+hotfix.3
dev_dependencies
analyzer *0.36.4 *0.36.4 *0.36.4 0.39.7
build_runner *1.7.4 *1.7.4 *1.7.4 1.9.0
transitive dependencies
asn1lib *0.5.15 *0.5.15 *0.5.15 0.6.4
permission_handler_platform_interface *1.0.0 *1.0.0 2.0.0 2.0.0
transitive dev_dependencies
build *1.1.6 *1.1.6 *1.1.6 1.2.2
build_config *0.4.1+1 *0.4.1+1 *0.4.1+1 0.4.2
dart_style *1.2.9 *1.2.9 *1.2.9 1.3.6
1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `pub upgrade`.
4 dependencies are constrained to versions that are older than a resolvable version.
To update these dependencies, edit pubspec.yaml.
答案 1 :(得分:2)
Flutter 2.0 发布后,您可以按照以下 flutter 命令行自动升级依赖包:
flutter pub outdated
flutter pub upgrade --major-versions
答案 2 :(得分:1)
Flutter当前不提供此类功能。
可能有第三方包装可以做到这一点。
我唯一知道的一个是den
(https://pub.dartlang.org/packages/den),但是由于相当长的一段时间没有维护,所以不能与最新的Dart或Flutter版本一起使用。
可能有帮助的是至少获取可用更新版本的依赖项列表。
为此https://github.com/flutter/flutter/issues/12627投票。
与此同时,可以使用https://github.com/flutter/flutter/issues/12627#issuecomment-400037072中提到的解决方法
在您的Flutter安装目录中设置FLUTTER_ROOT
并运行pub upgrade
。 (除了Flutter SDK之外,还需要安装Dart SDK)
$ export FLUTTER_ROOT="/Users/my_user/flutter"
$ pub upgrade
Resolving dependencies... (16.2s)
! analyzer 0.33.0 (overridden) (0.34.2 available)
args 1.5.1
async 2.0.8
boolean_selector 1.0.4
! build 1.1.0 (overridden)
built_collection 4.1.0
! built_redux 7.5.2 (overridden)
built_value 6.2.0
bwu_grinder_tasks 0.2.0-dev.0
charcode 1.1.2
cli_util 0.1.3+2
collection 1.14.11
contacts_service 0.0.9 (0.1.0 available)
> convert 2.1.1 (was 2.0.2)
crypto 2.0.6
csslib 0.14.6
dart_style 1.2.2
device_info 0.2.1 (0.3.0 available)
> file 5.0.7 (was 5.0.6)
> firebase_analytics 1.1.0 (was 1.0.6)
...
答案 3 :(得分:1)
有一个快速而肮脏的解决方案,它只读取pubspec.yaml文件,然后通过网络抓取来检查最新版本。
https://gist.github.com/spidgorny/ed475cbbe303e1c09c0f6c9f9f57dcad
示例:
cupertino_icons: 0.1.2
location: 2.3.5
flutter_local_notifications: 0.8.4
http: 0.12.0+1
=> 0.12.0+2
haversine: 1.0.2
flutter_map: 0.1.4
=> 0.7.3
map_native: 0.0.11
url_launcher: 5.1.4
flutter_html_view: 0.5.12
flutter_html: 0.8.2
background_fetch: 0.2.0
=> 0.3.2
package_info: 0.4.0+2
=> 0.4.0+6
liquid_pull_to_refresh: 1.1.1
provider: 3.0.0
=> 3.1.0
yaml: any
google_maps_flutter: 0.5.21+7
答案 4 :(得分:0)
您可以使用flutter packages upgrade
,Flutter会在有限制通知的情况下验证新发行版本。
在此处查看有关此文档的文档:https://flutter.io/docs/development/tools/sdk/upgrading
警告 :(摘自上面的链接)
不要使用pub get或pub upgrade命令来管理依赖项 适用于Flutter应用。而是使用flutter包中的get或flutter 软件包升级。如果要手动使用pub,可以运行它 直接通过设置FLUTTER_ROOT环境变量即可。
答案 5 :(得分:0)
使用pub outdated
来识别过期的软件包依赖关系,并获取有关如何更新它们的建议。依赖项管理的最佳实践包括使用最新的稳定软件包版本,以便您可以获得最新的错误修复和改进。
在{strong> Dart 2.8 中引入了pub outdated
命令。
已过期是发布工具的命令之一
flutter pub outdated
输出列
pub outdated
的输出针对每个过时的依赖项有四列版本信息。这是示例输出的一部分,显示了四个版本列:当前,可升级,可解决和最新。
当前
pubspec.lock
中记录的包中使用的版本。如果该软件包不在pubspec.lock
中,则值为-。
可升级
您的pubspec.yaml
文件允许的最新版本。这是pub upgrade
所解析的版本。如果当前列中的值为-。则为该值。
可解决
与所有其他依赖项结合使用时,可以解决的最新版本。如果pub upgrade
中的所有版本约束都不受限制,则此版本与pubspec.yaml
给您的内容相对应。值-表示不需要该软件包。
最新
可用软件包的最新版本,不包括预发行版本,除非您使用选项--prereleases
。
答案 6 :(得分:0)
即使 pubspec 文件中的版本为空,您也可以简单地检查依赖项的版本。在 Android Studio 中转到项目的 Root 目录,然后 External Libraries 展开它,您可以简单地查看依赖项的名称和版本号。不知道其他 IDE。
答案 7 :(得分:0)
升级单个包
dart pub upgrade <package_name>
升级所有软件包
dart pub upgrade --major-versions