Generate project documentation
Rationale
The correct invocation of helper modules and functions can be intimidating because
- these are generated dynamically (e.g., when creating a new project or adding a new
resource
) - they are not documented explicitly (e.g.,
MyApp.ErrorHelpers.error_tag
) - the documentation does not cover all examples (e.g.,
MyApp.Router.Helpers.*_path
inPhoenix.Router
).
Although the created helpers are scattered all over your project but their location follows a solid logic. You can get used to them pretty quick and fortunately, when you generate a project with Phoenix, the code is shipped with documentation via Elixir’s @doc
and @moduledoc
module attributes.
These docs are not limited to helpers only but you can also
- see your project broken down by submodules/functions/macros
- add your own documentation
- look up any functions that were generated under the namespace of your project (e.g.,
MyApp.Repo
contains callback function implementations fromEcto.Repo
)
Generating the docs
To generate documentation from your source code, add ex_doc
as dependency into your mix.exs
file:
# config/mix.exs
def deps do
[{:ex_doc, "~> 0.11", only: :dev}]
end
You can use Markdown within Elixir
@doc
and@moduledoc
attributes.
Then, run mix deps.get
to fetch and compile the new modules and generate the project documentation with mix docs
.
An example output is the official Elixir Docs.
To serve them immediately use mix docs --output priv/static/doc
and navigate to my_app_url_or_ip/doc/index.html
.
Additional reading:
The bulk of this guide is referenced from Elixir Recipes.