檢視原始碼 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/1
或 Application.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,也允許指令執行