elixir 的mix 比较灵活,同时也比较强大,很多时候我们可以自己定义一个任务,方便运行以及构建,不少
三方框架会提供一些方便的cli ,一般也会使用此方法比如ecto orm 框架,以下是一个简单的自定义task 学习
参考开发
- 目录位置
这个实际上都f放那里可以,只是有一个简单的约定,建议放到lib/mix/tasks
目录下 - 任务开发
一个简单的测试,dalong.ex
defmodule Mix.Tasks.Dalong do
use Mix.Task
# 定义一个帮助文档
@moduledoc "simple mix task `mix help dalong`"
@shortdoc "dalong mix task"
# 实现run behaviour
@impl true
def run(args) do
IO.inspect(args)
end
end
使用
mix help dalong
mix dalong "demoapp"
use Mix.Task
说明
自定义mix task 在不少框架中都有使用,自己开发一些自定义mix task 也比较简单,很多时候有利于项目开发(比如一些代码生成的场景)
参考资料
https://github.com/elixir-lang/elixir/blob/main/lib/mix/lib/mix/task.ex
https://hexdocs.pm/mix/1.12.3/Mix.Task.html