跳到主要內容

dart pub get

Get 是 pub 工具的其中一個指令。

$ 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 會盡可能使用其中鎖定的相依性版本。如果相依性未鎖定,pub 會取得符合所有版本約束的該相依性最新版本。這是 dart pub getdart pub upgrade 之間的主要差異,dart pub upgrade 總是嘗試取得所有相依性的最新版本。

套件解析

#

預設情況下,pub 會在 .dart_tool/ 目錄中建立 package_config.json 檔案,將套件名稱對應到位置 URI。

取得新的相依性

#

如果將相依性新增至 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 以升級到較新版本。

選項

#

如需適用於所有 pub 指令的選項,請參閱「全域選項」。

--[no-]offline

#

預設情況下,pub 會連線到網路以擷取託管的套件 (--no-offline)。若要改用快取的套件,請使用 --offline。如需詳細資訊,請參閱「離線取得」。

--dry-run-n

#

報告將變更的相依性,但不進行變更。如果您想在進行更新之前分析更新,這會很有用。

--[no-]precompile

#

預設情況下,pub 會預先編譯直接相依性中的可執行檔 (--precompile)。若要防止預先編譯,請使用 --no-precompile

--enforce-lockfile

#

強制執行目前的 pubspec.lock 解析。

如果 pubspec.lock 未精確指定 pubspec.yaml 的有效解析,或如果任何託管套件的內容雜湊已變更,則讓 pub get 失敗並顯示錯誤訊息。

適用於 CI 或部署到生產環境。

如需更多詳細資訊,請參閱「取得生產環境的相依性」。