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
import 'package:test/test.dart';
當 dart pub get
取得新的相依性時,它會寫入一個 lockfile,以確保未來取得的相依性會使用相同的版本。應用程式套件應將 lockfile 簽入原始碼控制;這可確保應用程式在所有開發人員之間以及部署到生產環境時,都會使用完全相同的相依性版本。不過,一般套件不應簽入 lockfile,因為它們預期要能與一系列的相依性版本搭配運作。
如果 lockfile 已經存在,dart pub get
會盡可能使用其中鎖定的相依性版本。如果相依性未鎖定,pub 會取得符合所有版本約束的該相依性最新版本。這是 dart pub get
和 dart 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 或部署到生產環境。
如需更多詳細資訊,請參閱「取得生產環境的相依性」。
除非另有說明,否則本網站上的文件反映的是 Dart 3.7.1。頁面最後更新於 2024-12-10。 檢視原始碼 或 回報問題。