在Flutter中查找和版本过时的软件包(跨主要版本)

时间:2019-01-18 06:10:04

标签: dart flutter

是否有办法列出和更新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

我知道我可以手动检查每个软件包的主要版本,但是如果它是自动的,那将很有帮助。

8 个答案:

答案 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 命令行自动升级依赖包:

  1. flutter pub outdated

  2. flutter pub upgrade --major-versions

答案 2 :(得分:1)

Flutter当前不提供此类功能。
可能有第三方包装可以做到这一点。 我唯一知道的一个是denhttps://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 

enter image description here

输出列

pub outdated的输出针对每个过时的依赖项有四列版本信息。这是示例输出的一部分,显示了四个版本列:当前,可升级,可解决和最新。

当前 pubspec.lock中记录的包中使用的版本。如果该软件包不在pubspec.lock中,则值为-。

可升级 您的pubspec.yaml文件允许的最新版本。这是pub upgrade所解析的版本。如果当前列中的值为-。则为该值。

可解决 与所有其他依赖项结合使用时,可以解决的最新版本。如果pub upgrade中的所有版本约束都不受限制,则此版本与pubspec.yaml给您的内容相对应。值-表示不需要该软件包。

最新 可用软件包的最新版本,不包括预发行版本,除非您使用选项--prereleases

答案 6 :(得分:0)

enter image description here

即使 pubspec 文件中的版本为空,您也可以简单地检查依赖项的版本。在 Android Studio 中转到项目的 Root 目录,然后 External Libraries 展开它,您可以简单地查看依赖项的名称和版本号。不知道其他 IDE。

答案 7 :(得分:0)

  • 升级单个包

    dart pub upgrade <package_name>
    
  • 升级所有软件包

    dart pub upgrade --major-versions