目次

dart pub outdated

Outdated は、pubツールのコマンドの1つです。

$ dart pub outdated [options]

dart pub outdatedを使用して、古いパッケージの依存関係を特定し、更新方法に関するアドバイスを取得します。 依存関係管理のベストプラクティスには、最新の安定版パッケージバージョンを使用することが含まれているため、最新の 버그 수정 と改善 प्राप्त कर सकते हैं.

概要

#

dart pub outdatedを使用して、所有しているパッケージ(アプリか通常のパッケージかにかかわらず)の依存関係を更新する方法を説明します。

  1. パッケージにソース管理にチェックインされたpubspec.lockファイルがない場合は、パッケージの最上位ディレクトリ(パッケージのpubspec.yamlファイルを含むディレクトリ)でdart pub getを実行します
  2. dart pub outdatedを実行して、どのパッケージの依存関係が古くなっているかを特定します。影響を受けるパッケージをメモしておいて、後でそれらを使用するコードの動作をテストできるようにします。
  3. パッケージを更新するには、dart pub outdatedの推奨事項に従います。一部の更新では、dart pub upgradeを実行するだけで済みます。その他の場合は、dart pub upgradeを実行する前にpubspec.yamlを更新する必要があります。
  4. dart pub outdatedを実行して、最新互換パッケージバージョンを使用していることを確認します。
  5. パッケージをテストして、期待どおりに動作することを確認します。

推移的な依存関係が原因で、古い依存関係がまだ残っている可能性があります。原因を特定するには、dart pub depsを実行し、出力で古いパッケージの名前を検索してみてください。

#

これは、古い依存関係がいくつかある例でdart pub outdatedを実行した例です。依存関係のうち3つ(argshttppath)は直接的で、1つは推移的です(meta)。次の例に示すように、dart pub outdatedは、コマンドラインで実行すると、デフォルトで出力を色分けします。

$ dart pub outdated

Package Name  Current    Upgradable  Resolvable  Latest

direct dependencies:
args          1.4.4      1.6.0       1.6.0       1.6.0
http          0.11.3+17  0.11.3+17   0.12.1      0.12.1  
path          1.6.2      1.6.2       1.6.2       1.7.0   

dev_dependencies: all up-to-date

transitive dependencies:
meta          1.1.6      1.1.6       1.1.6       1.1.8   

transitive dev_dependencies: all up-to-date

1 upgradable dependency is locked (in pubspec.lock) to an older version.
To update it, use `dart pub upgrade`.

1 dependency is constrained to a version that is older than a resolvable version.
To update it, edit pubspec.yaml.

解決可能カラムには、古い依存関係ごとにアップグレードできるバージョンが表示されます。赤くない値の最も左側のカラムを探すことで、詳細情報を得ることができます。たとえば、argsは1.6.0にアップグレード可能で、httpは0.12.1に解決可能です。 pathmetaパッケージは最新バージョンではありませんが、他のすべての依存関係を考慮すると、最新の解決可能バージョンです。

アップグレード可能としてリストされている最初の依存関係(args)を修正するには、dart pub upgradeを実行するだけです。

$ dart pub upgrade
Resolving dependencies...
> args 1.6.0 (was 1.4.4)
  ...
Changed 1 dependency!

解決可能としてリストされている2番目の依存関係(http)を修正するには、pubspecのhttpエントリを解決可能カラムのバージョン(または互換性のある上位バージョン)を使用するように変更できます。 キャレット構文では、これは^0.12.1です。 pubspec.yamlの差分は次のとおりです。

-  http: ^0.11.0
+  http: ^0.12.1

pubspec.yamlを編集した後、dart pub upgradeを実行してpubspec.lockファイルを更新します。その後、dart pub outdatedを実行して、必要な変更がすべて行われたことを確認できます。この例では、他の依存関係によって決定された制約により、pathmetaパッケージはまだ古くなっています。

$ dart pub upgrade
...
$ dart pub outdated
Package Name  Current  Upgradable  Resolvable  Latest

direct dependencies:
path          1.6.2    1.6.2       1.6.2       1.7.0

dev_dependencies: all up-to-date

transitive dependencies:
meta          1.1.6    1.1.6       1.1.6       1.1.8

transitive dev_dependencies: all up-to-date

Dependencies are all on the latest resolvable versions.
Newer versions, while available, are not mutually compatible.

これらのパッケージが古くなっている理由を確認するには、dart pub depsを実行し、これらのパッケージへの依存関係を探します。

$ dart pub deps -s list
...
dependencies:
...
- terminal_tools 0.1.0
  - path 1.6.2
  - meta 1.1.6
...

上記の出力に示すように、このパッケージはterminal_toolsパッケージに依存しており、これは古いバージョンのpathmetaに依存しています。 terminal_toolsパッケージが更新されると、このパッケージを更新できるようになります。

出力カラム

#

dart pub outdatedの出力には、古い依存関係ごとに4つのバージョンの情報カラムがあります。 出力の一部を次に示します。これは、4つのバージョンカラム(現在、アップグレード可能、解決可能、最新)を示しています。

Package Name  Current    Upgradable  Resolvable  Latest

direct dependencies:
args          1.4.4      1.6.0       1.6.0       1.6.0
http          0.11.3+17  0.11.3+17   0.12.1      0.12.1  
path          1.6.2      1.6.2       1.6.2       1.7.0   

dev_dependencies: all up-to-date

transitive dependencies:
meta          1.1.6      1.1.6       1.1.6       1.1.8
現在
pubspec.lockに記録されている、パッケージで使用されているバージョン。パッケージがpubspec.lockにない場合、値は-です。
アップグレード可能
pubspec.yamlファイルで許可されている最新バージョン。これは、dart pub upgradeが解決するバージョンです。 現在カラムの値が-の場合、値は-です。
解決可能
他のすべての依存関係と組み合わせたときに解決できる最新バージョン。このバージョンは、pubspec.yamlのすべてのバージョン制約が無制限の場合にdart pub upgradeが提供するバージョンに対応します。値が-の場合、パッケージは不要になります。
最新
オプション--prereleasesを使用しない限り、プレリリースを除く、利用可能なパッケージの最新バージョン。

たとえば、アプリがfoobarパッケージに依存しているが、barの最新バージョンではfooの古いメジャーバージョンのみが許可されているとします。その結果、fooの最新の解決可能バージョンは、foo最新バージョンとは異なります。

pubspec.yamlファイルを編集する場合は、通常、依存関係dev_dependenciesセクションを更新して、各パッケージが解決可能カラムのバージョンを使用するようにします。

オプション

#

すべてのコマンドに適用されるオプションについては、グローバルオプションを参照してください。 pub コマンド。

--[no-]dependency-overrides

#

デフォルトでは、パッケージの制約を解決するときにdependency_overridesが考慮されます(--dependency-overrides)。オーバーライドを考慮しない場合は、--no-dependency_overridesを使用します。

--[no-]dev-dependencies

#

デフォルトでは、パッケージの制約を解決するときに開発の依存関係が考慮されます(--dev-dependencies)。開発の依存関係を考慮しない場合は、--no-dev-dependenciesを使用します。

--json

#

JSON形式で出力を生成します。

--[no-]prereleases

#

デフォルトでは、最後のパッケージバージョンを決定するときにプレリリースが含まれます(--prereleases)。プレリリースを考慮しない場合は、--no-prereleasesを使用します。

--[no-]transitive

#

デフォルトでは、推移的な依存関係が出力に含まれません(--no-transitive)。推移的な依存関係を含めるには、--transitiveを使用します。

--[no-]up-to-date

#

デフォルトでは、最新バージョンの依存関係は含まれません(--no-up-to-date)。最新バージョンの依存関係を含めるには、--up-to-dateを使用します。