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
取得新的相依性時,它會寫入一個鎖定檔,以確保未來取得時將使用相同版本的相依性。應用程式套件應將鎖定檔簽入原始碼控制;這可確保應用程式在所有開發人員和部署到生產環境時,都會使用所有相依性的完全相同版本。不過,一般套件不應簽入鎖定檔,因為它們預期會與一系列相依性版本搭配使用。
如果已存在鎖定檔,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 網站的相依性) 會儲存在系統範圍快取中。這表示如果多個套件使用相同版本的相同相依性,則只需要下載一次並在本機儲存。
依預設,系統套件快取位於您主目錄的 .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 或部署到生產環境。
如需更多詳細資訊,請閱讀取得生產環境的相依性。
除非另有說明,否則本網站上的文件反映 Dart 3.6.0。頁面上次更新於 2024-12-10。 檢視來源 或 回報問題。