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

評估已設定應用程式中的給定程式碼。

$ mix eval "IO.puts(1 + 2)"

在當前應用程式設定完畢後評估給定的程式碼,但不會載入或啟動它們(有些應用程式可能會在開機時載入,但這並非保證)。請參閱 mix run 以在已啟動的應用程式中執行應用程式和指令碼。

此工作旨在反映發行版中的 bin/my_app eval 指令。它通常用於呼叫應用程式中已定義的函式。例如,您可能有如下模組

defmodule MyApp.ReleaseTasks do
  def migrate_database do
    Application.load(:my_app)
    ...
  end
end

定義後,您可以透過 mix eval 或透過發行版中的 bin/my_app eval 呼叫此函式,如下所示

$ mix eval MyApp.ReleaseTasks.migrate_database
$ bin/my_app eval MyApp.ReleaseTasks.migrate_database

如您所見,當前應用程式必須在您的工作中明確載入或啟動,方法是呼叫 Application.load/1Application.ensure_all_started/1。這讓您可以完全控制應用程式開機生命週期。如需更多資訊,請參閱 Application 模組。

此工作會自動重新啟用,因此可以使用不同的引數多次呼叫它。

命令列選項

  • --no-archives-check - 不檢查檔案
  • --no-compile - 即使檔案需要編譯,也不進行編譯
  • --no-deps-check - 不檢查相依性
  • --no-elixir-version-check - 不檢查 mix.exs 中的 Elixir 版本
  • --no-mix-exs - 即使沒有 mix.exs,也允許指令執行