@@ -58,14 +58,22 @@ defmodule Mix.Task do
58
58
59
59
@requirements ["app.config"]
60
60
61
- Tasks typically depend on the `"app.config"` task, when they
62
- need to access code from the current project with all apps
63
- already configured, or the "app.start" task, when they also
64
- need those apps to be already started:
65
-
66
- @requirements ["app.start"]
67
-
68
- You can also run tasks directly with `run/2`.
61
+ A task will typically depend on one of the following tasks:
62
+
63
+ * "loadpaths" - this ensures dependencies are available
64
+ and compiled. If you are publishing a task as part of
65
+ a library to be used by others, and your task does not
66
+ need to interact with the user code in any way, this is
67
+ the recommended requirement
68
+
69
+ * "app.config" - additionally compiles and loads the runtime
70
+ configuration for the current project. If you are creating
71
+ a task to be used within your application or as part of a
72
+ library, which must invoke or interact with the user code,
73
+ this is the minimum recommended requirement
74
+
75
+ * "app.start" - additionally starts the supervision tree of
76
+ the current project and its dependencies
69
77
70
78
Finally, set `@recursive true` if you want the task to run
71
79
on each umbrella child in an umbrella project.
0 commit comments