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 的主要區別,後者總是嘗試獲取所有依賴項的最新版本。
包解析
#預設情況下,pub 會在 .dart_tool/ 目錄中建立一個 package_config.json 檔案,將包名稱對映到位置 URI。
獲取新的依賴項
#如果在 pubspec 中添加了依賴項,然後執行 dart pub get,它會獲取新的依賴項及其所有傳遞依賴項。但是,pub 不會更改任何已獲取依賴項的版本,除非為了獲取新的依賴項而必需這樣做。
移除依賴項
#如果從 pubspec 中移除依賴項,然後執行 dart pub get,該依賴項將不再可供匯入。移除的依賴項的任何傳遞依賴項也將被移除,前提是沒有剩餘的直接依賴項也依賴於它們。移除依賴項永遠不會更改任何已獲取依賴項的版本。
系統包快取
#從網際網路下載的依賴項,例如來自 Git 和 pub.dev 站點的依賴項,儲存在系統範圍的快取中。這意味著如果多個包使用相同依賴項的相同版本,只需下載並在本地儲存一次。
預設情況下,系統包快取位於您的主目錄 (在 macOS 和 Linux 上) 的 .pub-cache 子目錄中,或者位於 %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 或部署到生產環境很有用。
閱讀獲取用於生產環境的依賴項以瞭解更多詳細資訊。