目錄

dart pub get

Getpub 工具的其中一個指令。

$ 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 取得新的相依性時,它會寫入一個鎖定檔,以確保未來取得時將使用相同版本的相依性。應用程式套件應將鎖定檔簽入原始碼控制;這可確保應用程式在所有開發人員和部署到生產環境時,都會使用所有相依性的完全相同版本。不過,一般套件不應簽入鎖定檔,因為它們預期會與一系列相依性版本搭配使用。

如果已存在鎖定檔,dart pub get 會盡可能使用鎖定在其中的相依性版本。如果未鎖定相依性,pub 會取得符合所有版本約束的該相依性最新版本。這是 dart pub getdart 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 會產生鎖定檔。如果您的快取中碰巧只有舊版本的某些相依性,離線 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 或部署到生產環境。

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