Skip to content

Commit 879d9cb

Browse files
authored
Add support for api_reference_noindex config (#2252)
1 parent 7a8fd56 commit 879d9cb

5 files changed

Lines changed: 28 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
* Enhancements
6+
* Add `:api_reference_noindex` option to keep search engines from indexing `api-reference.html`
7+
38
## v0.40.3 (2026-05-21)
49

510
* Enhancements

lib/ex_doc.ex

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ defmodule ExDoc do
1414
* `:api_reference` - Whether to generate `api-reference.html`; default: `true`.
1515
If this is set to false, `:main` must also be set.
1616
17+
* `:api_reference_noindex` - Whether to add a `<meta name="robots" content="noindex">`
18+
tag to `api-reference.html`, asking search engines not to index it; default: `false`.
19+
Useful when the page is large and its individual entries are already indexed.
20+
1721
* `:assets` - A map of source => target directories that will be copied as is to
1822
the output path. It defaults to an empty map.
1923

lib/ex_doc/formatter/config.ex

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ defmodule ExDoc.Formatter.Config do
2222
version: nil,
2323
main: "api-reference",
2424
api_reference: true,
25+
api_reference_noindex: false,
2526
canonical: nil,
2627
redirects: %{},
2728
assets: %{},
@@ -57,6 +58,7 @@ defmodule ExDoc.Formatter.Config do
5758
version: nil | String.t(),
5859
main: nil | String.t(),
5960
api_reference: boolean(),
61+
api_reference_noindex: boolean(),
6062
canonical: nil | String.t(),
6163
redirects: %{optional(String.t()) => String.t()} | [{String.t(), String.t()}],
6264
assets: %{binary() => binary()},
@@ -131,6 +133,7 @@ defmodule ExDoc.Formatter.Config do
131133
Keyword.take(options, [
132134
:main,
133135
:api_reference,
136+
:api_reference_noindex,
134137
:canonical,
135138
:redirects,
136139
:assets,

lib/ex_doc/formatter/html/templates/api_reference_template.eex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<%= head_template(config, "API Reference", false) %>
1+
<%= head_template(config, "API Reference", config.api_reference_noindex) %>
22
<%= sidebar_template(config, :extra) %>
33

44
<div id="top-content">

test/ex_doc/formatter/html_test.exs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,21 @@ defmodule ExDoc.Formatter.HTMLTest do
138138
refute content =~ ~r{"id":"api-reference","title":"API Reference"}
139139
end
140140

141+
test "does not add noindex to api-reference by default", %{tmp_dir: tmp_dir} = context do
142+
generate(config(context))
143+
144+
content = File.read!(tmp_dir <> "/html/api-reference.html")
145+
refute content =~ ~r{<meta name="robots" content="noindex">}
146+
end
147+
148+
test "adds noindex to api-reference when :api_reference_noindex is true",
149+
%{tmp_dir: tmp_dir} = context do
150+
generate(config(context, api_reference_noindex: true))
151+
152+
content = File.read!(tmp_dir <> "/html/api-reference.html")
153+
assert content =~ ~r{<meta name="robots" content="noindex">}
154+
end
155+
141156
test "generates markdown links when markdown formatter is included",
142157
%{tmp_dir: tmp_dir} = context do
143158
generate(

0 commit comments

Comments
 (0)