檢視原始碼 mix deps (Mix v1.16.2)

列出所有相依性及其狀態。

相依性必須在 mix.exs 檔案中以下列其中一種格式指定

{app, requirement}
{app, opts}
{app, requirement, opts}

其中

  • app 為原子
  • requirement 為 Version 需求或正規表示法
  • opts 為選項關鍵字清單

例如

{:plug, ">= 0.4.0"}
{:gettext, git: "https://github.com/elixir-lang/gettext.git", tag: "0.1"}
{:local_dependency, path: "path/to/local_dependency"}

預設情況下,相依性會使用 Hex 套件管理員 來擷取

{:plug, ">= 0.4.0"}

透過指定此類相依性,Mix 會自動安裝 Hex(如果之前未安裝)並下載適合您專案的套件。請注意,Hex 預期相依性需求始終會提供,否則會發出警告。

Mix 也支援 Git 和路徑相依性

{:foobar, git: "https://github.com/elixir-lang/foobar.git", tag: "0.1"}
{:foobar, path: "path/to/foobar"}

以及在傘狀相依性中

{:my_app, in_umbrella: true}

路徑和傘狀相依性會在變更時由父專案自動重新編譯。而可擷取的相依性(例如使用 :git 的相依性)僅在擷取/更新時重新編譯。

相依性的版本預期會根據語意化版本控管來格式化,而需求必須根據 Version 模組中所定義的內容來指定。

選項

以下我們提供可用的選項的更詳細說明。

相依性定義選項

  • :app - 設定為 false 時,不會讀取此相依性的 app 檔案。預設情況下,會讀取 app 檔案

  • :env - 執行相依性的環境(以原子表示);預設為 :prod

  • :compile - 編譯相依性的命令(字串);預設為 mixrebarmake 命令

  • :optional - 標記相依性為選用。在這種情況下,目前的專案將永遠包含選用相依性,但任何其他相依於目前專案的專案不會被強制使用選用相依性。不過,如果其他專案自行包含選用相依性,此處指定的條件和選項也會套用。應用程式不會啟動選用相依性。

  • :only - 相依性僅在指定的環境中可用,在宣告開發或測試專用相依性時很有用;預設情況下,相依性會在所有環境中可用。此選項的值可以是單一環境(例如 :dev)或環境清單(例如 [:dev, :test]

  • :targets - 相依性僅在指定的目標中可用。預設情況下,相依性會在所有環境中可用。此選項的值可以是單一目標(例如 :host)或環境清單(例如 [:host, :rpi3]

  • :override - 如果設定為 true,相依性將覆寫其他相依性對其本身的任何其他定義

  • :manager - Mix 也能編譯 Rebar3 和 makefile 專案,並能擷取 Rebar3 專案的子相依性。Mix 會嘗試推論專案類型,但可以透過設定此選項為 :mix:rebar3:make 來覆寫。如果定義有衝突,將會選取上述清單中的第一個管理員。例如,如果在樹狀結構的不同部分找到一個管理員為 :rebar3 的相依性,:rebar3 將會自動選取。您可以執行 mix deps 找出管理員,並透過設定頂層專案中的 :override 選項來覆寫它。

  • :runtime - 相依性是否為執行時期應用程式的部分。如果 mix.exs 檔案中的 def application 中未提供 :applications 鍵,Mix 將自動將所有相依性包含為執行時期應用程式,除非給定 runtime: false。預設為 true。

  • :system_env - 可列舉的二進制鍵值對,用於在載入或編譯相依性時設定為環境變數

Git 選項 (:git)

  • :git - Git 儲存庫 URI
  • :github - 指定 GitHub 中 Git 儲存庫的捷徑,使用 :git
  • :ref - 簽出的參考(可能是分支、提交 SHA 或標籤)
  • :branch - 要簽出的 Git 分支
  • :tag - 要簽出的 Git 標籤
  • :submodules - 如果為 true,初始化儲存庫的子模組
  • :sparse - 簽出 Git 儲存庫中的單一目錄,並將其用作 Mix 相依性。搜尋「sparse Git 簽出」以取得更多資訊。
  • :subdir -(自 v1.13.0 起)在 git 簽出相對應的給定目錄中搜尋專案。這類似於 :sparse 選項,但它執行的是完整簽出,而不是稀疏簽出。

如果 Git 儲存庫需要驗證,例如透過 URL 的基本使用者名稱:密碼 HTTP 驗證,則可透過 Git 設定來達成,將存取規則保留在原始碼控制之外。

$ git config --global url."https://YOUR_USER:YOUR_PASS@example.com/".insteadOf "https://example.com/"

如需更多資訊,請參閱 git config 文件:https://git.dev.org.tw/docs/git-config#git-config-urlltbasegtinsteadOf

路徑選項 (:path)

  • :path - 相依性的路徑
  • :in_umbrella - 如果為 true,設定路徑相依性指向「../#{app}」,與目前的應用程式共用相同的環境

Hex 選項 (:hex)

請參閱 Hex 使用文件以取得 Hex 選項。

Deps 任務

mix deps 任務以下列格式列出所有相依性

APP VERSION (SCM) (MANAGER)
[locked at REF]
STATUS

對於由 Hex 滿足的相依性,REF 是套件檢查碼。

對於由 git 滿足的相依性,REF 是提交物件名稱,可能包含分支或標籤資訊。

它支援下列選項

  • --all - 列出所有相依性,不論指定的環境為何