[{"data":1,"prerenderedAt":19},["ShallowReactive",2],{"clay-page:\u002Fpublishing\u002Fbuild-checks":3},{"html":4,"toc":5,"description":15,"hero":16,"list":17,"socialImage":18},"\u003Ch1 id=\"build-checks\">Build Checks\u003C\u002Fh1>\n\u003Cp>Every \u003Ccode>clay build\u003C\u002Fcode> checks your docs before it renders them. Problems are reported as warnings under the step that found them:\u003C\u002Fp>\n\u003Cdiv class=\"code-block is-terminal has-bar\">\u003Cdiv class=\"code-terminal\" aria-hidden=\"true\">\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes light-plus dark-plus\" style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4;--shiki-light-bg:#FFFFFF;--shiki-dark-bg:#1E1E1E\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">●  Loaded 12 pages from docs · 280ms\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">│  ▲ clay.yaml: unknown key \"navbar.lgo\" is ignored (typo?)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">│  ▲ Broken link in guides\u002Fsetup.md: \"instal.md\" points to a missing page (\u002Fguides\u002Finstal)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cbutton type=\"button\" class=\"copy-code btn btn-sm btn-square btn-ghost\" title=\"Copy code\" aria-label=\"Copy code\">\u003Ci class=\"fa-solid fa-copy\">\u003C\u002Fi>\u003C\u002Fbutton>\u003C\u002Fdiv>\n\u003Cdiv class=\"mermaid-diagram\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" viewBox=\"0 0 1068.422 246.79549999999998\" width=\"1068.422\" height=\"246.79549999999998\">\n\n\u003Cdefs>\n  \u003Cmarker id=\"diagram-1-arrowhead\" markerWidth=\"8\" markerHeight=\"5\" refX=\"7\" refY=\"2.5\" orient=\"auto\">\n    \u003Cpolygon points=\"0 0, 8 2.5, 0 5\" fill=\"var(--_arrow)\" stroke=\"var(--_arrow)\" stroke-width=\"0.75\" stroke-linejoin=\"round\">\u003C\u002Fpolygon>\n  \u003C\u002Fmarker>\n  \u003Cmarker id=\"diagram-1-arrowhead-start\" markerWidth=\"8\" markerHeight=\"5\" refX=\"1\" refY=\"2.5\" orient=\"auto-start-reverse\">\n    \u003Cpolygon points=\"8 0, 0 2.5, 8 5\" fill=\"var(--_arrow)\" stroke=\"var(--_arrow)\" stroke-width=\"0.75\" stroke-linejoin=\"round\">\u003C\u002Fpolygon>\n  \u003C\u002Fmarker>\n\u003C\u002Fdefs>\n\u003Cpolyline class=\"edge\" data-from=\"A\" data-to=\"B\" data-style=\"solid\" data-arrow-start=\"false\" data-arrow-end=\"true\" points=\"144.935,104.838 192.935,104.838\" fill=\"none\" stroke=\"var(--_line)\" stroke-width=\"1\" marker-end=\"url(#diagram-1-arrowhead)\">\u003C\u002Fpolyline>\n\u003Cpolyline class=\"edge\" data-from=\"B\" data-to=\"D\" data-style=\"solid\" data-arrow-start=\"false\" data-arrow-end=\"true\" data-label=\"none\" points=\"300.99833333333333,83.22533333333334 606.747,83.22533333333334 606.747,58.085499999999996 688.1569999999999,58.085499999999996 688.1569999999999,78.51383333333332 703.127,78.51383333333332\" fill=\"none\" stroke=\"var(--_line)\" stroke-width=\"1\" marker-end=\"url(#diagram-1-arrowhead)\">\u003C\u002Fpolyline>\n\u003Cpolyline class=\"edge\" data-from=\"B\" data-to=\"C\" data-style=\"solid\" data-arrow-start=\"false\" data-arrow-end=\"true\" data-label=\"warnings\" points=\"300.99833333333333,126.45066666666665 358.611,126.45066666666665 358.611,151.5905 472.217,151.5905\" fill=\"none\" stroke=\"var(--_line)\" stroke-width=\"1\" marker-end=\"url(#diagram-1-arrowhead)\">\u003C\u002Fpolyline>\n\u003Cpolyline class=\"edge\" data-from=\"C\" data-to=\"D\" data-style=\"solid\" data-arrow-start=\"false\" data-arrow-end=\"true\" data-label=\"no\" points=\"564.2253333333333,133.18883333333332 618.627,133.18883333333332 618.627,122.21549999999999 688.1569999999999,122.21549999999999 688.1569999999999,90.81383333333332 703.127,90.81383333333332\" fill=\"none\" stroke=\"var(--_line)\" stroke-width=\"1\" marker-end=\"url(#diagram-1-arrowhead)\">\u003C\u002Fpolyline>\n\u003Cpolyline class=\"edge\" data-from=\"C\" data-to=\"E\" data-style=\"solid\" data-arrow-start=\"false\" data-arrow-end=\"true\" data-label=\"yes\" points=\"564.2253333333333,169.99216666666666 703.127,169.99216666666666\" fill=\"none\" stroke=\"var(--_line)\" stroke-width=\"1\" marker-end=\"url(#diagram-1-arrowhead)\">\u003C\u002Fpolyline>\n\u003Cpolyline class=\"edge\" data-from=\"D\" data-to=\"F\" data-style=\"solid\" data-arrow-start=\"false\" data-arrow-end=\"true\" points=\"859.191,84.66383333333332 904.221,84.66383333333332\" fill=\"none\" stroke=\"var(--_line)\" stroke-width=\"1\" marker-end=\"url(#diagram-1-arrowhead)\">\u003C\u002Fpolyline>\n\u003Cg class=\"edge-label\" data-from=\"B\" data-to=\"D\" data-label=\"none\">\n  \u003Crect x=\"614.747\" y=\"42.085499999999996\" width=\"41.41\" height=\"30.3\" rx=\"2\" ry=\"2\" fill=\"var(--bg)\" stroke=\"var(--_inner-stroke)\" stroke-width=\"1\">\u003C\u002Frect>\n  \u003Ctext x=\"635.452\" y=\"57.235499999999995\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"400\" fill=\"var(--_text-sec)\" dy=\"3.8499999999999996\">none\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"edge-label\" data-from=\"B\" data-to=\"C\" data-label=\"warnings\">\n  \u003Crect x=\"366.611\" y=\"135.5905\" width=\"61.606\" height=\"30.3\" rx=\"2\" ry=\"2\" fill=\"var(--bg)\" stroke=\"var(--_inner-stroke)\" stroke-width=\"1\">\u003C\u002Frect>\n  \u003Ctext x=\"397.414\" y=\"150.7405\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"400\" fill=\"var(--_text-sec)\" dy=\"3.8499999999999996\">warnings\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"edge-label\" data-from=\"C\" data-to=\"D\" data-label=\"no\">\n  \u003Crect x=\"626.627\" y=\"106.21549999999999\" width=\"29.53\" height=\"30.3\" rx=\"2\" ry=\"2\" fill=\"var(--bg)\" stroke=\"var(--_inner-stroke)\" stroke-width=\"1\">\u003C\u002Frect>\n  \u003Ctext x=\"641.3919999999999\" y=\"121.3655\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"400\" fill=\"var(--_text-sec)\" dy=\"3.8499999999999996\">no\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"edge-label\" data-from=\"C\" data-to=\"E\" data-label=\"yes\">\n  \u003Crect x=\"626.627\" y=\"153.99216666666666\" width=\"35.47\" height=\"30.3\" rx=\"2\" ry=\"2\" fill=\"var(--bg)\" stroke=\"var(--_inner-stroke)\" stroke-width=\"1\">\u003C\u002Frect>\n  \u003Ctext x=\"644.362\" y=\"169.14216666666667\" text-anchor=\"middle\" font-size=\"11\" font-weight=\"400\" fill=\"var(--_text-sec)\" dy=\"3.8499999999999996\">yes\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"node\" data-id=\"A\" data-label=\"Load docs\" data-shape=\"rectangle\">\n  \u003Crect x=\"40\" y=\"86.38799999999999\" width=\"104.93499999999999\" height=\"36.900000000000006\" rx=\"0\" ry=\"0\" fill=\"var(--_node-fill)\" stroke=\"var(--_node-stroke)\" stroke-width=\"0.75\">\u003C\u002Frect>\n  \u003Ctext x=\"92.4675\" y=\"104.838\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"500\" fill=\"var(--_text)\" dy=\"4.55\">Load docs\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"node\" data-id=\"B\" data-label=\"Problems?\" data-shape=\"diamond\">\n  \u003Cpolygon points=\"257.773,40 322.611,104.838 257.773,169.676 192.93500000000003,104.838\" fill=\"var(--_node-fill)\" stroke=\"var(--_node-stroke)\" stroke-width=\"0.75\">\u003C\u002Fpolygon>\n  \u003Ctext x=\"257.773\" y=\"104.838\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"500\" fill=\"var(--_text)\" dy=\"4.55\">Problems?\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"node\" data-id=\"D\" data-label=\"Render every page\" data-shape=\"rectangle\">\n  \u003Crect x=\"703.127\" y=\"66.21383333333333\" width=\"156.06400000000002\" height=\"36.900000000000006\" rx=\"0\" ry=\"0\" fill=\"var(--_node-fill)\" stroke=\"var(--_node-stroke)\" stroke-width=\"0.75\">\u003C\u002Frect>\n  \u003Ctext x=\"781.159\" y=\"84.66383333333333\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"500\" fill=\"var(--_text)\" dy=\"4.55\">Render every page\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"node\" data-id=\"C\" data-label=\"--strict?\" data-shape=\"diamond\">\n  \u003Cpolygon points=\"527.422,96.38550000000002 582.6270000000001,151.59050000000002 527.422,206.7955 472.21700000000004,151.59050000000002\" fill=\"var(--_node-fill)\" stroke=\"var(--_node-stroke)\" stroke-width=\"0.75\">\u003C\u002Fpolygon>\n  \u003Ctext x=\"527.422\" y=\"151.59050000000002\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"500\" fill=\"var(--_text)\" dy=\"4.55\">--strict?\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"node\" data-id=\"E\" data-label=\"Build fails\" data-shape=\"rectangle\">\n  \u003Crect x=\"703.127\" y=\"151.54216666666667\" width=\"97.525\" height=\"36.900000000000006\" rx=\"0\" ry=\"0\" fill=\"var(--_node-fill)\" stroke=\"var(--_node-stroke)\" stroke-width=\"0.75\">\u003C\u002Frect>\n  \u003Ctext x=\"751.8895\" y=\"169.99216666666666\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"500\" fill=\"var(--_text)\" dy=\"4.55\">Build fails\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003Cg class=\"node\" data-id=\"F\" data-label=\"publish\u002Fpublic\" data-shape=\"rectangle\">\n  \u003Crect x=\"904.221\" y=\"66.21383333333333\" width=\"124.20100000000001\" height=\"36.900000000000006\" rx=\"0\" ry=\"0\" fill=\"var(--_node-fill)\" stroke=\"var(--_node-stroke)\" stroke-width=\"0.75\">\u003C\u002Frect>\n  \u003Ctext x=\"966.3215\" y=\"84.66383333333333\" text-anchor=\"middle\" font-size=\"13\" font-weight=\"500\" fill=\"var(--_text)\" dy=\"4.55\">publish\u002Fpublic\u003C\u002Ftext>\n\u003C\u002Fg>\n\u003C\u002Fsvg>\u003C\u002Fdiv>\n\u003Ch2 id=\"what-is-checked\">\u003Ca class=\"heading-anchor\" href=\"#what-is-checked\" aria-label=\"Link to this section\" data-route=\"#what-is-checked\">#\u003C\u002Fa>What is checked\u003C\u002Fh2>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Check\u003C\u002Fth>\n\u003Cth>Example warning\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Links to pages that do not exist\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>Broken link in guides\u002Fsetup.md: \"instal.md\" points to a missing page (\u002Fguides\u002Finstal)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Links to sections that do not exist\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>Broken link in index.md: \"guides\u002Fsetup.md#instal\" points to a missing section (#instal on \u002Fguides\u002Fsetup)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Images and files that do not exist\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>Broken link in index.md: \"img\u002Flogo.png\" points to a missing file\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ca href=\"\u002Fclay-example-repo\u002Fwriting\u002Fsnippets-and-variables\" data-route=\"\u002Fwriting\u002Fsnippets-and-variables\">Snippets\u003C\u002Fa> that cannot be included\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>docs\u002Fguides\u002Fsetup.md: includes \"..\u002F_snippets\u002Fgone.md\", which does not exist; it is left out\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Unknown settings in \u003Ccode>clay.yaml\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>clay.yaml: unknown key \"navbar.lgo\" is ignored (typo?)\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Front matter from Clay 3\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>guides\u002Findex.md: \"cards\" is no longer read since Clay 4; it is called \"list\"\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Files and settings from Clay 2\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>dir-meta.yaml is no longer read since Clay 3; give each folder an index.md with its title, icon and order\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>A missing site title\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>clay.yaml: \"title\" is not set\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Settings from Clay 1\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>clay.yaml: \"langs\" is no longer needed and is ignored\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Translations without an original\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>setup.de.md: translates setup.md, which does not exist; the file is skipped\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Unusable language codes\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>clay.yaml: \"Deutsch\" is not a language code like \"en\" or \"pt-BR\"; it is ignored\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Unusable or clashing versions\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>docs\u002F1.x: docs\u002Flatest\u002F1.x has the same URL as this version; rename one of them\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Missing git history\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>the docs are not in a git repository: last-updated dates are skipped\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>Links, images and videos written in HTML (\u003Ccode>&lt;a href&gt;\u003C\u002Fcode>, \u003Ccode>&lt;img src&gt;\u003C\u002Fcode>, \u003Ccode>&lt;video src&gt;\u003C\u002Fcode>) are checked like Markdown ones. Links to other websites are not checked.\u003C\u002Fp>\n\u003Ch2 id=\"--strict\">\u003Ca class=\"heading-anchor\" href=\"#--strict\" aria-label=\"Link to this section\" data-route=\"#--strict\">#\u003C\u002Fa>--strict\u003C\u002Fh2>\n\u003Cdiv class=\"code-block is-terminal has-bar\">\u003Cdiv class=\"code-terminal\" aria-hidden=\"true\">\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes light-plus dark-plus\" style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4;--shiki-light-bg:#FFFFFF;--shiki-dark-bg:#1E1E1E\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line command\">\u003Cspan style=\"--shiki-light:#695221;--shiki-dark:#DCDCAA\">npx\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#A31515;--shiki-dark:#CE9178\"> clay\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#A31515;--shiki-dark:#CE9178\"> build\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#0000FF;--shiki-dark:#569CD6\"> --strict\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cbutton type=\"button\" class=\"copy-code btn btn-sm btn-square btn-ghost\" title=\"Copy code\" aria-label=\"Copy code\">\u003Ci class=\"fa-solid fa-copy\">\u003C\u002Fi>\u003C\u002Fbutton>\u003C\u002Fdiv>\n\u003Cp>With \u003Ccode>--strict\u003C\u002Fcode>, warnings fail the build. Use it in CI: a typo in a link then stops the deployment instead of reaching your readers.\u003C\u002Fp>\n\u003Cdiv class=\"code-block is-terminal has-bar\">\u003Cdiv class=\"code-terminal\" aria-hidden=\"true\">\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes light-plus dark-plus\" style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4;--shiki-light-bg:#FFFFFF;--shiki-dark-bg:#1E1E1E\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">✖  Loading docs\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">│  ▲ Broken link in guides\u002Fsetup.md: \"instal.md\" points to a missing page (\u002Fguides\u002Finstal)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">│  clay build --strict: 1 problem found, see the warnings above\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">│\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">└  Build failed after 290ms. Run \"clay build --verbose\" for the full output.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cbutton type=\"button\" class=\"copy-code btn btn-sm btn-square btn-ghost\" title=\"Copy code\" aria-label=\"Copy code\">\u003Ci class=\"fa-solid fa-copy\">\u003C\u002Fi>\u003C\u002Fbutton>\u003C\u002Fdiv>\n\u003Cp>Missing git history is the one warning that never fails a build: it only means the pages show no dates.\u003C\u002Fp>\n\u003Cp>To catch problems before they are merged, run the same check on every pull request:\u003C\u002Fp>\n\u003Cdiv class=\"clay-prompt-aura aura not-prose\">\u003Cdiv class=\"clay-prompt code-block\">\u003Cdiv class=\"clay-prompt-title\">\u003Ci class=\"fa-solid fa-wand-magic-sparkles\" aria-hidden=\"true\">\u003C\u002Fi>\u003Cspan>Suggested prompt\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"clay-prompt-text\">Add a GitHub Actions workflow, .github\u002Fworkflows\u002Fdocs-check.yaml, that runs\n`npx clay build --strict` on every pull request that changes docs\u002F or\nclay.yaml. Set up Node.js like the deploy workflow in\nhttps:\u002F\u002Fclay-doc.github.io\u002Fclay-example-repo\u002Fpublishing\u002Fgithub-pages.md,\ncheck out the full history, and do not deploy anything.\u003C\u002Fpre>\u003Cbutton type=\"button\" class=\"copy-code btn btn-sm btn-square btn-ghost\" title=\"Copy prompt\" aria-label=\"Copy prompt\">\u003Ci class=\"fa-solid fa-copy\">\u003C\u002Fi>\u003C\u002Fbutton>\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Ch2 id=\"when-a-build-fails\">\u003Ca class=\"heading-anchor\" href=\"#when-a-build-fails\" aria-label=\"Link to this section\" data-route=\"#when-a-build-fails\">#\u003C\u002Fa>When a build fails\u003C\u002Fh2>\n\u003Cp>Some problems stop every build, strict or not, for example a page that cannot be rendered. Clay marks the step that failed and shows the cause:\u003C\u002Fp>\n\u003Cdiv class=\"code-block is-terminal has-bar\">\u003Cdiv class=\"code-terminal\" aria-hidden=\"true\">\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes light-plus dark-plus\" style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4;--shiki-light-bg:#FFFFFF;--shiki-dark-bg:#1E1E1E\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">✖  Prerendering pages\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">│  404 Page Not Found on 1 page: \u002Fguides\u002Fold-page\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4\">│  Exiting due to prerender errors.\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cbutton type=\"button\" class=\"copy-code btn btn-sm btn-square btn-ghost\" title=\"Copy code\" aria-label=\"Copy code\">\u003Ci class=\"fa-solid fa-copy\">\u003C\u002Fi>\u003C\u002Fbutton>\u003C\u002Fdiv>\n\u003Cp>Here a page links to an address that does not exist, in a way the link check could not see, for example in raw HTML. Fix the link and build again. When a page itself cannot be rendered, the line above names the cause and the page, for example \u003Ccode>Cannot read properties of undefined (rendering \u002Fguides\u002Fsetup)\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>For the complete output of the underlying build tools, run:\u003C\u002Fp>\n\u003Cdiv class=\"code-block is-terminal has-bar\">\u003Cdiv class=\"code-terminal\" aria-hidden=\"true\">\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003Cspan>\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cpre class=\"shiki shiki-themes light-plus dark-plus\" style=\"--shiki-light:#000000;--shiki-dark:#D4D4D4;--shiki-light-bg:#FFFFFF;--shiki-dark-bg:#1E1E1E\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line command\">\u003Cspan style=\"--shiki-light:#695221;--shiki-dark:#DCDCAA\">npx\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#A31515;--shiki-dark:#CE9178\"> clay\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#A31515;--shiki-dark:#CE9178\"> build\u003C\u002Fspan>\u003Cspan style=\"--shiki-light:#0000FF;--shiki-dark:#569CD6\"> --verbose\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cbutton type=\"button\" class=\"copy-code btn btn-sm btn-square btn-ghost\" title=\"Copy code\" aria-label=\"Copy code\">\u003Ci class=\"fa-solid fa-copy\">\u003C\u002Fi>\u003C\u002Fbutton>\u003C\u002Fdiv>\n\u003Cdiv class=\"markdown-alert markdown-alert-tip\">\n\u003Cp class=\"markdown-alert-title text-primary\">\u003Ci class=\"fa-solid fa-lightbulb mr-2\">\u003C\u002Fi>Tip\u003C\u002Fp>\n\u003Cp>Run \u003Ccode>npx clay build --strict\u003C\u002Fcode> locally before you push. It takes a few seconds and catches the same problems CI would.\u003C\u002Fp>\n\u003C\u002Fdiv>\n",[6,10,12],{"id":7,"text":8,"level":9},"what-is-checked","What is checked",2,{"id":11,"text":11,"level":9},"--strict",{"id":13,"text":14,"level":9},"when-a-build-fails","When a build fails","The problems clay build reports, how --strict turns them into errors, and what to do when a build fails.",null,false,"\u002F_clay\u002Fsocial\u002Fpublishing\u002Fbuild-checks.png",1792666370279]