Packages
ex_doc
0.40.0
0.40.3
0.40.2
0.40.1
0.40.0
0.39.3
0.39.2
0.39.1
0.39.0
0.38.4
0.38.3
0.38.2
0.38.1
0.38.0
0.37.3
0.37.2
0.37.1
0.37.0
0.37.0-rc.2
0.37.0-rc.1
0.37.0-rc.0
0.36.1
0.36.0
0.35.1
0.35.0
0.34.2
0.34.1
0.34.0
0.33.0
0.32.2
0.32.1
0.32.0
0.31.2
0.31.1
0.31.0
0.30.9
0.30.8
0.30.7
0.30.6
0.30.5
0.30.4
0.30.3
0.30.2
0.30.1
0.30.0
0.29.4
0.29.3
0.29.2
0.29.1
0.29.0
0.28.6
0.28.5
0.28.4
0.28.3
0.28.2
0.28.1
0.28.0
0.27.3
0.27.2
0.27.1
0.27.0
0.26.0
0.25.5
0.25.4
0.25.3
0.25.2
0.25.1
0.25.0
0.24.2
0.24.1
0.24.0
0.23.0
0.22.6
0.22.5
0.22.4
0.22.2
0.22.1
0.22.0
0.21.3
0.21.2
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.19.0-rc
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
retired
0.17.1
0.17.0
retired
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.2
0.13.1
0.13.0
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
ExDoc is a documentation generation tool for Elixir
Current section
Files
Jump to
Current section
Files
mix.exs
defmodule ExDoc.Mixfile do
use Mix.Project
@source_url "https://github.com/elixir-lang/ex_doc"
@version "0.40.0"
def project do
[
app: :ex_doc,
version: @version,
elixir: "~> 1.15",
deps: deps(),
aliases: aliases(),
package: package(),
escript: escript(),
elixirc_paths: elixirc_paths(Mix.env()),
source_url: @source_url,
test_elixirc_options: [docs: true, debug_info: true],
test_ignore_filters: [&String.starts_with?(&1, "test/fixtures/")],
name: "ExDoc",
description: "ExDoc is a documentation generation tool for Elixir",
docs: docs()
]
end
def cli do
[preferred_envs: ["hex.publish": :prod]]
end
def application do
[
extra_applications: [:eex] ++ extra_applications(Mix.env()),
mod: {ExDoc.Application, []}
]
end
defp extra_applications(:test), do: [:edoc, :xmerl]
defp extra_applications(_), do: []
defp deps do
[
{:earmark_parser, "~> 1.4.44"},
{:makeup_elixir, "~> 0.14 or ~> 1.0"},
{:makeup_erlang, "~> 0.1 or ~> 1.0"},
# Add other makeup lexers as optional for the executable
{:makeup_c, ">= 0.1.0", optional: true},
{:makeup_html, ">= 0.1.0", optional: true},
{:jason, "~> 1.2", only: :test},
{:lazy_html, "~> 0.1.0", only: :test}
]
end
defp aliases do
[
build: ["cmd --cd assets npm run build", "compile --force", &docs/1],
clean: [&clean_test_fixtures/1, "clean"],
fix: ["format", "cmd --cd assets npm run lint:fix"],
lint: ["format --check-formatted", "cmd --cd assets npm run lint"],
setup: ["deps.get", "cmd --cd assets npm install"]
]
end
defp package do
[
licenses: ["Apache-2.0"],
maintainers: ["José Valim", "Milton Mazzarri", "Wojtek Mach"],
files: ~w(CHANGELOG.md Cheatsheet.cheatmd formatters lib LICENSE mix.exs README.md),
links: %{
"GitHub" => @source_url,
"Changelog" => "https://hexdocs.pm/ex_doc/changelog.html",
"Writing documentation" => "https://hexdocs.pm/elixir/writing-documentation.html"
}
]
end
defp escript do
[
main_module: ExDoc.CLI
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp docs do
if Mix.env() == :dev do
[
search: [
%{
name: "ExDoc + Elixir",
help: "Search latest ExDoc + Elixir",
packages: [:ex_doc, elixir: "main"]
},
%{
name: "ExDoc on Google",
help: "Search everything about ExDoc on Google",
url: "https://google.com/?q="
},
%{name: "Lunr", help: "Search using Lunr in browser"}
]
]
else
[]
end ++
[
main: "readme",
extras:
[
"README.md",
"Cheatsheet.cheatmd",
"CHANGELOG.md"
] ++ test_dev_examples(Mix.env()),
source_ref: "v#{@version}",
source_url: @source_url,
groups_for_modules: [
Markdown: [
ExDoc.Markdown,
ExDoc.Markdown.Earmark
],
Formatter: [
ExDoc.Formatter,
ExDoc.Formatter.Config
],
Nodes: [
ExDoc.ModuleNode,
ExDoc.DocNode,
ExDoc.DocGroupNode,
ExDoc.ExtraNode,
ExDoc.URLNode
]
],
groups_for_extras: [
Examples: ~r"test/examples"
],
skip_undefined_reference_warnings_on: [
"CHANGELOG.md"
]
]
end
defp docs(args) do
Mix.Task.run("docs", args)
{text_tags, 0} = System.cmd("git", ["tag"])
versions =
for("v" <> rest <- String.split(text_tags), do: Version.parse!(rest))
|> Enum.sort({:desc, Version})
list_contents =
Enum.map_intersperse(versions, ", ", fn version ->
string = Version.to_string(version)
~s[{"version":"v#{string}", "url":"https://hexdocs.pm/ex_doc/#{string}"}]
end)
File.write!("doc/docs_config.js", """
var versionNodes = [#{list_contents}];
""")
end
defp test_dev_examples(:dev), do: Path.wildcard("test/examples/*")
defp test_dev_examples(_), do: []
defp clean_test_fixtures(_args) do
File.rm_rf("test/tmp")
end
end