目次

dart pub get

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

$ dart pub get [options]

このコマンドは、現在の作業ディレクトリのpubspec.yamlファイルにリストされているすべての依存関係とその推移的依存関係を取得します。例:

$ dart pub get
Resolving dependencies...
Got dependencies!

システムキャッシュに依存関係が含まれていない場合、dart pub getはキャッシュを更新し、必要に応じて依存関係をダウンロードします。パッケージをシステムキャッシュにマッピングするために、このコマンドは.dart_tool/ディレクトリにpackage_config.jsonファイルを作成します。

依存関係が取得されると、Dartコードで参照できるようになります。たとえば、パッケージがtestに依存している場合:

dart
import 'package:test/test.dart';

dart pub getが新しい依存関係を取得すると、将来の取得で同じバージョンの依存関係を使用するように、lockfileを書き込みます。アプリケーションパッケージはlockfileをソースコントロールにチェックインする必要があります。これにより、アプリケーションはすべての開発者および本番環境へのデプロイ時に、すべての依存関係のまったく同じバージョンを使用することが保証されます。ただし、通常のパッケージは、さまざまな依存関係のバージョンで動作することが期待されるため、lockfileをチェックインするべきではありません。

lockfileが既に存在する場合、dart pub getは可能な限り、そのlockfileにロックされている依存関係のバージョンを使用します。依存関係がロックされていない場合、pubはすべてのバージョン制約を満たす、その依存関係の最新バージョンを取得します。これは、dart pub getdart pub upgradeの主な違いです。dart pub upgradeは常にすべての依存関係の最新バージョンを取得しようとします。

パッケージ解決

#

デフォルトでは、pubはパッケージ名と場所URIをマッピングするpackage_config.jsonファイルを.dart_tool/ディレクトリに作成します。

新しい依存関係の取得

#

依存関係がpubspecに追加され、dart pub getが実行されると、新しい依存関係とその推移的依存関係が取得されます。ただし、新しい依存関係を取得するために必要な場合を除き、pubは既に取得済みの依存関係のバージョンを変更しません。

依存関係の削除

#

依存関係がpubspecから削除され、dart pub getが実行されると、その依存関係はインポートできなくなります。削除された依存関係の推移的依存関係も、残りの直接的な依存関係がそれらに依存していない限り、削除されます。依存関係の削除によって、既に取得済みの依存関係のバージョンが変更されることはありません。

システムパッケージキャッシュ

#

Gitやpub.devサイトなど、インターネット経由でダウンロードされた依存関係は、システム全体のキャッシュに保存されます。つまり、複数のパッケージが同じバージョンの同じ依存関係を使用する場合、ローカルにダウンロードして保存する必要があるのは一度だけです。

デフォルトでは、システムパッケージキャッシュはホームディレクトリの.pub-cacheサブディレクトリ(macOSとLinux)または%LOCALAPPDATA%\Pub\Cache(Windows。Windowsのバージョンによって場所は異なる場合があります)にあります。pubを実行する前にPUB_CACHE環境変数を設定して、キャッシュの場所を設定できます。

オフラインでの取得

#

ネットワークアクセスがない場合でも、dart pub getを実行できます。pubはパッケージをシステム上のすべてのパッケージで共有される中央キャッシュにダウンロードするため、ネットワークを使用せずに、既にダウンロードされたパッケージを見つけることができることがよくあります。

ただし、デフォルトでは、ホストされている依存関係がある場合、dart pub getはオンラインに接続しようとします。これにより、pubは依存関係の新しいバージョンを検出できます。pubにそれを行わせたくない場合は、--offlineフラグを渡します。オフラインモードでは、pubはローカルパッケージキャッシュのみを調べ、既に利用可能なものからパッケージと連携するバージョンのセットを見つけようとします。

pubはlockfileを生成することに注意してください。キャッシュ内の依存関係の唯一のバージョンが古い場合、オフラインのdart pub getはその古いバージョンにアプリをロックします。次にオンラインになったときには、dart pub upgradeを実行して、新しいバージョンにアップグレードする必要があります。

オプション

#

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

--[no-]offline

#

デフォルトでは、pubはネットワークに接続してホストされているパッケージを取得します(--no-offline)。代わりにキャッシュされたパッケージを使用するには、--offlineを使用します。詳細については、オフラインでの取得を参照してください。

--dry-runまたは-n

#

変更される依存関係を報告しますが、変更は行いません。これは、変更を加える前に更新を分析する場合に役立ちます。

--[no-]precompile

#

デフォルトでは、pubは直接的な依存関係内の実行可能ファイルを事前にコンパイルします(--precompile)。プリコンパイルを防止するには、--no-precompileを使用します。

--enforce-lockfile

#

現在のpubspec.lockの解決を強制します。

pubspec.lockpubspec.yamlの有効な解決を正確に指定していない場合、またはホストされているパッケージのコンテンツハッシュが変更されている場合、エラーメッセージでpub getを失敗させます。

CIや本番環境へのデプロイに役立ちます。

本番環境用の依存関係を取得するの詳細については、こちらを参照してください。