檢視原始碼 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
- 編譯相依性的命令(字串);預設為mix
、rebar
或make
命令: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
- 列出所有相依性,不論指定的環境為何