查看源代码 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 - 编译后不启动应用程序