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

執行目前的應用程式。

mix run 啟動目前的應用程式相依項和應用程式本身。如果應用程式尚未編譯或已過時,將會編譯應用程式。

mix run 也可能透過其他選項在應用程式內容中執行程式碼。例如,若要在目前的應用程式中執行指令碼,您可以傳遞檔案名稱作為引數

$ mix run my_app_script.exs arg1 arg2 arg3

要執行的程式碼也可以透過 -e 選項內嵌傳遞

$ mix run -e "DbUtils.delete_old_records()" -- arg1 arg2 arg3

在兩種情況下,指令碼或表達式的命令列引數都可以在 System.argv/0 中使用。這會反映 elixir 可執行檔中的命令列介面。

若要啟動長時間執行的系統,通常會傳遞 --no-halt 選項

$ mix run --no-halt

也可以提供 --no-start 選項,且不會啟動目前的應用程式或其相依項。或者,您可以使用 mix eval 評估單一表達式,而不會啟動目前的應用程式。

如果您需要在使用 mix run 的同時傳遞選項給 Elixir 可執行檔,可以執行下列動作

$ elixir --sname hello -S mix run --no-halt

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

命令列選項

  • --eval, -e - 評估給定的程式碼
  • --require, -r - 執行給定的樣式/檔案
  • --parallel, -p - 使所有需求平行
  • --preload-modules - 預載入應用程式中定義的所有模組
  • --no-archives-check - 不檢查檔案
  • --no-compile - 即使檔案需要編譯,也不會編譯
  • --no-deps-check - 不檢查依賴項
  • --no-elixir-version-check - 不從 mix.exs 檢查 Elixir 版本
  • --no-halt - 在執行命令後不會停止系統
  • --no-mix-exs - 即使沒有 mix.exs,也允許執行命令
  • --no-start - 編譯後不會啟動應用程式