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

編譯原始檔的主要進入點。

它只會執行專案中註冊的編譯器,並傳回編譯狀態和診斷清單的元組。

在編譯程式碼之前,它會執行一系列檢查,以確保所有相依性都已編譯,且專案是最新的。然後,Elixir 系統的程式碼路徑會被修剪,只包含您在 mix.exs 中明確列出的相依性和應用程式。

設定

  • :build_embedded - 這個選項用於將所有程式碼和 priv 內容複製到 _build 目錄。不過,這個選項不再有效,因為 Elixir 現在會在發行時複製這些內容

  • :compilers - 要執行的編譯器,預設為 Mix.compilers/0,即 [:erlang, :elixir, :app]

  • :consolidate_protocols - 當為 true 時,會透過 mix compile.protocols 任務執行通訊協定合併。預設值為 true

  • :build_path - 應將建置成品寫入的目錄。此選項僅適用於較大傘式應用程式中的子應用程式,以便每個子應用程式可以使用父傘式應用程式的共用 _build 目錄。在非傘式應用程式中,設定此選項會有不良的副作用(例如略過一些編譯器檢查),應避免使用。

  • :prune_code_paths - 在編譯前修剪程式碼路徑。當為 true(預設值)時,這會修剪專案檔案中未列為相依性的應用程式的程式碼路徑。當為 false 時,這會讓 Erlang/OTP 在專案啟動時保持完整,包括程式碼載入器從 ERL_LIBS 環境設定的程式碼路徑,以及透過提供 -pa-pz 選項給 Erlang 明確列出的程式碼路徑。

編譯器

要查看每個特定編譯器的文件,您必須直接針對編譯器命令呼叫 help

$ mix help compile.elixir
$ mix help compile.erlang

您可以透過執行下列指令取得所有編譯器的清單

$ mix compile --list

命令列選項

  • --all-warnings (--no-all-warnings) - 列印所有警告,包括之前的編譯(預設為 true,但錯誤時例外)
  • --erl-config - 將作為 Mix 設定載入的 Erlang 項檔案路徑
  • --force - 強制編譯
  • --list - 列出所有已啟用的編譯器
  • --no-app-loading - 編譯後不載入 .app 資源檔案
  • --no-archives-check - 略過檔案檢查
  • --no-compile - 不實際編譯,只載入程式碼並執行檢查
  • --no-deps-check - 略過相依性檢查
  • --no-elixir-version-check - 不檢查 Elixir 版本
  • --no-optional-deps - 不編譯或載入選用相依性。這對於測試程式庫是否仍能在沒有選用相依性的情況下成功編譯很有用(這是相依性的預設情況)
  • --no-prune-code-paths - 在編譯前不移除程式碼路徑,這讓專案啟動時能使用完整的 Erlang/OTP
  • --no-protocol-consolidation - 略過協定合併
  • --no-validate-compile-env - 不驗證應用程式編譯環境
  • --return-errors - 在發生錯誤時傳回錯誤狀態和診斷,而不是結束執行
  • --warnings-as-errors - 如果編譯有一個或多個警告,則以非零狀態結束執行

摘要

函式

傳回目前專案的所有編譯器。

函式

連結至這個函式

compilers(config \\ Mix.Project.config())

檢視原始碼

傳回目前專案的所有編譯器。