ex_doc1
Generate elixir/erlang documentation from sources
Usage
ex_doc PROJECT
VERSION
BEAMS
[OPTIONS]
Overview
ExDoc is a tool to generate documentation for Erlang and Elixir projects. To see an example, [you can access Elixir's official docs](https://hexdocs.pm/elixir/).
Features
ExDoc ships with many features:
* Automatically generates online- and offline-accessible HTML and EPUB documents from your API documentation.
* Responsive design, covering phones and tablets.
* Support for custom pages, guides, livebooks and cheatsheets.
* Support for custom grouping of modules, functions, and pages in the sidebar.
* Customizable logo.
* A direct link back to the source code for every documented entity.
* Full-text search.
* Keyboard shortcuts. (Press `?` to show help.)
* Quick-search with autocompletion support. (`s` keyboard shortcut.)
* Go-to shortcut with auto-complete to take the reader to any HexDocs package documentation. (`g` keyboard shortcut.)
* Support for night mode, activated according to the browser preference.
* Tooltips for links to modules and functions, both for the current project and other projects.
* Version dropdown, automatically configured when hosted on HexDocs.
Options
- PROJECT
-
Project name.
- VERSION
-
Version number.
- BEAMS
-
Path to compiled beam files.
-
--canonical -
Indicate the preferred URL with rel="canonical" link element.
-
-c, --config -
Give configuration through a file instead of a command line. See "Custom config" section below for more information.
-
-f, --formatter -
Docs formatter to use (html or epub), default: html and epub.
-
--homepage-url -
URL to link to for the site name.
-
--language -
Identify the primary language of the documents, its value must be a valid [BCP 47](https://tools.ietf.org/html/bcp47) language tag, default: "en".
-
-l, --logo -
Path to the image logo of the project (only PNG or JPEG accepted) The image size will be 64x64 and copied to the assets directory.
-
-m, --main -
The entry-point page in docs, default: "api-reference".
-
-o, --output -
Path to output docs, default: "doc".
-
--package -
Hex package name.
-
--paths -
Prepends the given path to Erlang code path. The path might contain a glob pattern but in that case, remember to quote it: --paths "_build/dev/lib/*/ebin". This option can be given multiple times.
-
--proglang -
The project's programming language, default: "elixir".
-
-q, --quiet -
Only output warnings and errors.
-
--source-ref -
Branch/commit/tag used for source link inference, default: "master".
-
-u, --source-url -
URL to the source code.
-
-v, --version -
Print ExDoc version.
Examples
ex_doc "Ecto" "0.8.0" "_build/dev/lib/ecto/ebin" -u "https://github.com/elixir-ecto/ecto"
ex_doc "Project" "1.0.0" "_build/dev/lib/project/ebin" -c "docs.exs"
Custom config
A custom config can be given with the `--config` option.
The file must either have ".exs" or ".config" extension.
The file with the ".exs" extension must be an Elixir script that returns a keyword list with the same options declares in `Mix.Tasks.Docs`. Here is an example:
[
extras: Path.wildcard("lib/elixir/pages/*.md"),
groups_for_docs: [
Guards: & &1[:guard] == true
],
skip_undefined_reference_warnings_on: ["compatibility-and-deprecations"],
groups_for_modules: [
...
]
]
The file with the ".config" extension must contain Erlang terms separated by ".". See `:file.consult/1` for more information. Here is an example:
{extras, [<<"README.md">>, <<"CHANGELOG.md">>]}.
{main, <<"readme">>}.
{proglang, erlang}.
Source linking
ExDoc by default provides links to the source code implementation as long as `--source-url` or `--source-url-pattern` is provided. If you provide `--source-url`, ExDoc will inflect the url pattern automatically for GitHub, GitLab, and Bitbucket URLs. For example:
--source-url "https://github.com/elixir-ecto/ecto"
Will be inflected as:
https://github.com/elixir-ecto/ecto/blob/master/%{path}#L%{line}
To specify a particular branch or commit, use the `--source-ref` option:
--source-url "https://github.com/elixir-ecto/ecto" --source-ref "v1.0"
will result in the following URL pattern:
https://github.com/elixir-ecto/ecto/blob/v1.0/%{path}#L%{line}