跳到主要內容

dart pub upgrade

Upgradepub 工具的命令之一。

$ dart pub upgrade [options] [dependencies]

dart pub get 類似,dart pub upgrade 獲取依賴。不同之處在於 dart pub upgrade 會忽略任何現有的 lockfile,以便 pub 可以獲取所有依賴的最新版本。一個相關的命令是 dart pub outdated,你可以執行它來查詢過時的依賴。

不帶任何附加引數時,dart pub upgrade 會獲取當前工作目錄中 pubspec.yaml 檔案列出的所有依賴及其傳遞依賴的最新版本。例如

dart pub upgrade
Dependencies upgraded!

dart pub upgrade 升級依賴版本時,它會寫入一個 lockfile,以確保 dart pub get 將使用這些依賴的相同版本。對於應用 Package,應將 lockfile 提交到原始碼控制;這確保了應用在所有開發人員環境中以及部署到生產環境時都使用完全相同的依賴版本。對於普通 Package,則不應提交 lockfile,因為 Package 應相容一系列依賴版本。

如果 lockfile 已經存在,dart pub upgrade 會忽略它並從頭開始生成一個新的 lockfile,使用所有依賴的最新版本。

有關 Package 解析和系統 Package 快取的更多資訊,請參閱 dart pub get 文件

升級特定依賴

#

你可以指定 dart pub upgrade 升級特定的依賴到最新版本,同時儘量保留其餘依賴不變。例如

dart pub upgrade test args
Dependencies upgraded!

通常,其他依賴不會被升級;它們保持在 lockfile 中鎖定的版本。但是,如果請求的升級導致與這些鎖定版本不相容,則會選擇性地解鎖它們,直到找到相容的版本集合。

這意味著預設情況下,升級特定依賴不會升級其傳遞依賴。

要將特定依賴及其所有傳遞依賴升級到最新版本,請使用 --unlock-transitive 標誌。

dart pub upgrade --unlock-transitive test args

獲取新依賴

#

如果在執行 dart pub upgrade 之前將依賴新增到 pubspec,它將獲取新依賴及其任何傳遞依賴。這與 dart pub get 的行為相同。

移除依賴

#

如果在執行 dart pub upgrade 之前從 pubspec 中移除了依賴,該依賴將不再可供匯入。被移除依賴的任何傳遞依賴也會被移除,前提是沒有剩餘的直接依賴也依賴於它們。這與 dart pub get 的行為相同。

離線升級

#

如果你沒有網路訪問,你仍然可以執行 dart pub upgrade。因為 pub 會將 Package 下載到系統上所有 Package 共享的中心快取中,所以通常無需使用網路即可找到之前下載的 Package。

然而,預設情況下,如果你有任何託管依賴,dart pub upgrade 會嘗試聯網,以便 pub 可以檢測到較新的依賴版本。如果你不希望 pub 這樣做,請傳入 --offline 標誌。在離線模式下,pub 只會查詢本地 Package 快取,嘗試從已有的內容中找到一組與你的 Package 相容的版本。

請記住,pub 會生成一個 lockfile。如果快取中的某個依賴只有舊版本,離線執行的 dart pub upgrade 會將你的應用鎖定到該舊版本。下次你線上時,你很可能需要再次執行 dart pub upgrade 來升級到更新的版本。

選項

#

dart pub upgrade 命令支援 dart pub get 的選項,以及更多選項。對於適用於所有 pub 命令的選項,請參閱全域性選項

--[no-]offline

#

預設情況下,pub 會連線到網路以檢索托管 Package (--no-offline)。要使用快取的 Package,請使用 --offline。有關詳細資訊,請參閱離線獲取 Package

--dry-run-n

#

報告將要更改的依賴,但不實際執行更改。如果你想在進行更新之前進行分析,此選項很有用。

--[no-]precompile

#

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

--major-versions

#

獲取 dart pub outdated 列為可解析(resolvable)的 Package,忽略 pubspec.yaml 檔案中的任何上限約束。同時更新 pubspec.yaml 檔案中的新約束。

要檢查哪些依賴將被升級,你可以使用 dart pub upgrade --major-versions --dry-run

--tighten

#

更新 pubspec.yaml 檔案中依賴的下限以匹配已解析的版本,並返回更改的約束列表。可以應用於特定依賴

--unlock-transitive

#

當與要解鎖的 Package 列表一起使用時,首先計算這些 Package 的依賴關係的傳遞閉包(在當前解析中),然後解鎖所有這些 Package。

在工作區中

#

Pub 工作區中,dart pub upgrade 將升級共享解析中來自所有工作區 Package 的所有依賴。

dart pub upgrade --major-versionsdart pub upgrade --tighten 將更新所有工作區 pubspec.yaml 檔案中的約束。