[{"data":1,"prerenderedAt":143},["ShallowReactive",2],{"hub:tools":3},{"path":4,"key":5,"title":6,"h1":7,"description":8,"crumbs":9,"blocks":15},"\u002Ftools\u002F","tools","Guides by Tool: Astro, Hugo, Netlify and More","Guides by tool","Every guide grouped by the generator, host or testing tool it covers: Astro, Eleventy, Hugo, Next.js, Cloudflare, Netlify, GitHub Actions and more.",[10,13],[11,12],"Home","\u002F",[14,4],"Tools",[16,19,21,24,58,60,77,79,87,123],{"k":17,"text":18},"p","Topics answer what a guide is about; tools answer what it is about in your stack. If your site is built with Hugo, deployed from GitHub Actions and served by Cloudflare, those three pages collect every guide that works with them in depth, across all three sections of the site — build times and image caches, CI workflows, edge caching and redirects.",{"k":17,"text":20},"A guide is filed under a tool when the tool is its subject or is used throughout it, not when it is mentioned in passing, and a tool gets its own page once at least five guides cover it. Tools with fewer guides are still searchable and appear in the list below with a link to a filtered search instead of a thin page.",{"k":22,"html":23},"fig","\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 383\" role=\"img\" aria-labelledby=\"hub-tools-hero-title hub-tools-hero-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-tools-hero-title\">Layers of a static site stack and the tools covered at each\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-tools-hero-desc\">Four layers. Generators and docs frameworks such as Astro, Eleventy, Hugo, Jekyll, Next.js, Starlight and Docusaurus. CI such as GitHub Actions. Hosting and edge such as Cloudflare, Netlify, Vercel and AWS. Measurement and search such as Lighthouse and Pagefind.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"383\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"40.0\" y=\"60.0\" width=\"440.0\" height=\"57.2\" rx=\"8\" fill=\"#6a4c93\" opacity=\"0.14\" stroke=\"#6a4c93\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M260.0 119.2 L260.0 139.2\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-tools-hero-arrow)\"\u002F>\n    \u003Crect x=\"40.0\" y=\"143.2\" width=\"440.0\" height=\"57.2\" rx=\"8\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M260.0 202.4 L260.0 222.4\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-tools-hero-arrow)\"\u002F>\n    \u003Crect x=\"40.0\" y=\"226.4\" width=\"440.0\" height=\"57.2\" rx=\"8\" fill=\"#8ac926\" opacity=\"0.2\" stroke=\"#5a8a16\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M260.0 285.6 L260.0 305.6\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-tools-hero-arrow)\"\u002F>\n    \u003Crect x=\"40.0\" y=\"309.6\" width=\"440.0\" height=\"57.2\" rx=\"8\" fill=\"#ffca3a\" opacity=\"0.24\" stroke=\"#a97b00\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">Where each tool sits in a static site\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"86.4\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Generator and docs framework\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"103.3\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">Astro, Eleventy, Hugo, Jekyll, Next.js, Starlight\u003C\u002Ftext>\n    \u003Ctext x=\"504.0\" y=\"92.6\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:start\">build the HTML\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"169.5\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">CI\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"186.4\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">GitHub Actions\u003C\u002Ftext>\n    \u003Ctext x=\"504.0\" y=\"175.8\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:start\">build, test, deploy\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"252.7\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Hosting and edge\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"269.6\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">Cloudflare, Netlify, Vercel, AWS\u003C\u002Ftext>\n    \u003Ctext x=\"504.0\" y=\"259.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:start\">serve and cache\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"335.9\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Measurement and search\u003C\u002Ftext>\n    \u003Ctext x=\"260.0\" y=\"352.8\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">Lighthouse, Pagefind\u003C\u002Ftext>\n    \u003Ctext x=\"504.0\" y=\"342.2\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:start\">check and find\u003C\u002Ftext>\n  \u003C\u002Fg>\n  \u003Cdefs>\n    \u003Cmarker id=\"hub-tools-hero-arrow\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\n      \u003Cpath d=\"M0 0 L10 5 L0 10 z\" fill=\"#556071\"\u002F>\n    \u003C\u002Fmarker>\n  \u003C\u002Fdefs>\n\u003C\u002Fsvg>\n\u003Cfigcaption>Most sites use one tool from each layer, which is why reading across two or three tool pages covers most of a stack.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":25,"h":26,"items":27},"group","Generators",[28,33,38,43,48,53],{"t":29,"u":30,"d":31,"y":32},"Astro","\u002Ftools\u002Fastro\u002F","Islands, content collections, astro:assets and deployment.","63 guides",{"t":34,"u":35,"d":36,"y":37},"Eleventy","\u002Ftools\u002Feleventy\u002F","Incremental builds, image pipelines and the data cascade.","39 guides",{"t":39,"u":40,"d":41,"y":42},"Hugo","\u002Ftools\u002Fhugo\u002F","Build time at scale, image caches, modules and multilingual sites.","37 guides",{"t":44,"u":45,"d":46,"y":47},"Jekyll","\u002Ftools\u002Fjekyll\u002F","Plugins, reproducible builds, upgrades and migration away.","14 guides",{"t":49,"u":50,"d":51,"y":52},"Next.js","\u002Ftools\u002Fnextjs\u002F","Static export for content sites, its limits and alternatives.","13 guides",{"t":54,"u":55,"d":56,"y":57},"Gatsby","\u002Ftools\u002Fgatsby\u002F","Maintaining and migrating existing Gatsby sites.","5 guides",{"k":22,"html":59},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 634\" role=\"img\" aria-labelledby=\"hub-tools-counts-title hub-tools-counts-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-tools-counts-title\">Number of guides that cover each tool in depth\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-tools-counts-desc\">Horizontal bars, largest first: Astro 63, Eleventy 39, Hugo 37, Cloudflare 27, GitHub Actions 19, Netlify 17, AWS (S3 and CloudFront) 15, Lighthouse 15, Jekyll 14, Next.js 13, Vercel 12, Starlight 10, Pagefind 10, Docusaurus 7, VitePress 7, nginx 7, Playwright 7, GitHub Pages 6, Gatsby 5 and Caddy 5.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"634\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"240.0\" y=\"65.0\" width=\"467.2\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"93.0\" width=\"289.2\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"121.0\" width=\"274.4\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"149.0\" width=\"200.2\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"177.0\" width=\"140.9\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"205.0\" width=\"126.1\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"233.0\" width=\"111.2\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"261.0\" width=\"111.2\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"289.0\" width=\"103.8\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"317.0\" width=\"96.4\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"345.0\" width=\"89.0\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"373.0\" width=\"74.2\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"401.0\" width=\"74.2\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"429.0\" width=\"51.9\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"457.0\" width=\"51.9\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"485.0\" width=\"51.9\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"513.0\" width=\"51.9\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"541.0\" width=\"44.5\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"569.0\" width=\"37.1\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"240.0\" y=\"597.0\" width=\"37.1\" height=\"14.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M240.0 60.0 L240.0 616.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">Guides per tool\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"76.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Astro\u003C\u002Ftext>\n    \u003Ctext x=\"715.2\" y=\"76.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">63\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"104.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Eleventy\u003C\u002Ftext>\n    \u003Ctext x=\"537.2\" y=\"104.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">39\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"132.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Hugo\u003C\u002Ftext>\n    \u003Ctext x=\"522.4\" y=\"132.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">37\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"160.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Cloudflare\u003C\u002Ftext>\n    \u003Ctext x=\"448.2\" y=\"160.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">27\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"188.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">GitHub Actions\u003C\u002Ftext>\n    \u003Ctext x=\"388.9\" y=\"188.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">19\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"216.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Netlify\u003C\u002Ftext>\n    \u003Ctext x=\"374.1\" y=\"216.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">17\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"244.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">AWS (S3 and CloudFront)\u003C\u002Ftext>\n    \u003Ctext x=\"359.2\" y=\"244.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">15\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"272.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Lighthouse\u003C\u002Ftext>\n    \u003Ctext x=\"359.2\" y=\"272.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">15\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"300.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Jekyll\u003C\u002Ftext>\n    \u003Ctext x=\"351.8\" y=\"300.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">14\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"328.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Next.js\u003C\u002Ftext>\n    \u003Ctext x=\"344.4\" y=\"328.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">13\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"356.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Vercel\u003C\u002Ftext>\n    \u003Ctext x=\"337.0\" y=\"356.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">12\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"384.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Starlight\u003C\u002Ftext>\n    \u003Ctext x=\"322.2\" y=\"384.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">10\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"412.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Pagefind\u003C\u002Ftext>\n    \u003Ctext x=\"322.2\" y=\"412.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">10\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"440.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Docusaurus\u003C\u002Ftext>\n    \u003Ctext x=\"299.9\" y=\"440.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">7\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"468.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">VitePress\u003C\u002Ftext>\n    \u003Ctext x=\"299.9\" y=\"468.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">7\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"496.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">nginx\u003C\u002Ftext>\n    \u003Ctext x=\"299.9\" y=\"496.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">7\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"524.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Playwright\u003C\u002Ftext>\n    \u003Ctext x=\"299.9\" y=\"524.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">7\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"552.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">GitHub Pages\u003C\u002Ftext>\n    \u003Ctext x=\"292.5\" y=\"552.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">6\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"580.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Gatsby\u003C\u002Ftext>\n    \u003Ctext x=\"285.1\" y=\"580.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">5\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"608.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Caddy\u003C\u002Ftext>\n    \u003Ctext x=\"285.1\" y=\"608.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">5\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>Tools with at least 5 guides; a guide can cover more than one tool.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":25,"h":61,"items":62},"Documentation frameworks",[63,68,73],{"t":64,"u":65,"d":66,"y":67},"Starlight","\u002Ftools\u002Fstarlight\u002F","Astro-based docs: overrides, translation and migration in.","10 guides",{"t":69,"u":70,"d":71,"y":72},"Docusaurus","\u002Ftools\u002Fdocusaurus\u002F","Versioned docs, faster builds and migration out.","7 guides",{"t":74,"u":75,"d":76,"y":72},"VitePress","\u002Ftools\u002Fvitepress\u002F","Vue-based docs, compared on build time and page weight.",{"k":22,"html":78},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 295\" role=\"img\" aria-labelledby=\"hub-tools-layers-title hub-tools-layers-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-tools-layers-title\">Number of guides that cover at least one tool in each layer\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-tools-layers-desc\">Vertical bars: Generators 114, Documentation frameworks 18, Build and deploy pipelines 19, Hosting and edge 70 and Measurement, testing and search 35. A further 125 guides are tool-agnostic and appear under topics only.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"295\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"67.2\" y=\"76.0\" width=\"81.6\" height=\"170.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"203.2\" y=\"219.2\" width=\"81.6\" height=\"26.8\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"339.2\" y=\"217.7\" width=\"81.6\" height=\"28.3\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"475.2\" y=\"141.6\" width=\"81.6\" height=\"104.4\" rx=\"3\" fill=\"#8ac926\" opacity=\"0.4\" stroke=\"#5a8a16\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"611.2\" y=\"193.8\" width=\"81.6\" height=\"52.2\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M30.0 246.0 L730.0 246.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Ctext x=\"380.0\" y=\"30.0\" fill=\"#1f2937\" style=\"font-size:16px;text-anchor:middle;font-weight:700\">Guides by layer of the stack\u003C\u002Ftext>\n    \u003Ctext x=\"108.0\" y=\"69.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">114\u003C\u002Ftext>\n    \u003Ctext x=\"108.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Generators\u003C\u002Ftext>\n    \u003Ctext x=\"244.0\" y=\"212.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">18\u003C\u002Ftext>\n    \u003Ctext x=\"244.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Docs frameworks\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"210.7\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">19\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Pipelines\u003C\u002Ftext>\n    \u003Ctext x=\"516.0\" y=\"134.6\" fill=\"#3f6410\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">70\u003C\u002Ftext>\n    \u003Ctext x=\"516.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Hosting and edge\u003C\u002Ftext>\n    \u003Ctext x=\"652.0\" y=\"186.8\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">35\u003C\u002Ftext>\n    \u003Ctext x=\"652.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Measure and search\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>125 of 347 guides are about a technique rather than a product and are filed under topics only.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":25,"h":80,"items":81},"Build and deploy pipelines",[82],{"t":83,"u":84,"d":85,"y":86},"GitHub Actions","\u002Ftools\u002Fgithub-actions\u002F","Caching, matrix builds, reusable workflows and pinning.","19 guides",{"k":25,"h":88,"items":89},"Hosting and edge",[90,95,100,105,110,115,119],{"t":91,"u":92,"d":93,"y":94},"Cloudflare","\u002Ftools\u002Fcloudflare\u002F","Pages and Workers hosting, cache rules and edge functions.","27 guides",{"t":96,"u":97,"d":98,"y":99},"Netlify","\u002Ftools\u002Fnetlify\u002F","Headers, redirects, deploy previews and build caching.","17 guides",{"t":101,"u":102,"d":103,"y":104},"Vercel","\u002Ftools\u002Fvercel\u002F","Non-Next.js generators, the Build Output API and caching.","12 guides",{"t":106,"u":107,"d":108,"y":109},"AWS (S3 and CloudFront)","\u002Ftools\u002Faws\u002F","S3 and CloudFront: clean URLs, cache policies and deploys.","15 guides",{"t":111,"u":112,"d":113,"y":114},"GitHub Pages","\u002Ftools\u002Fgithub-pages\u002F","Publishing from Actions and custom domains.","6 guides",{"t":116,"u":117,"d":118,"y":72},"nginx","\u002Ftools\u002Fnginx\u002F","Self-hosted serving, compression and cache headers.",{"t":120,"u":121,"d":122,"y":57},"Caddy","\u002Ftools\u002Fcaddy\u002F","Self-hosted serving with automatic HTTPS.",{"k":25,"h":124,"items":125},"Measurement, testing and search",[126,130,134,138],{"t":127,"u":128,"d":129,"y":109},"Lighthouse","\u002Ftools\u002Flighthouse\u002F","Budgets, Lighthouse CI and lab against field data.",{"t":131,"u":132,"d":133,"y":72},"Playwright","\u002Ftools\u002Fplaywright\u002F","End-to-end and visual regression tests on built output.",{"t":135,"u":136,"d":137,"y":67},"Pagefind","\u002Ftools\u002Fpagefind\u002F","Static search indexes, multilingual search and budgets.",{"t":139,"u":140,"d":141,"y":142},"Tailwind CSS","\u002Fsearch\u002F?tool=tailwind","Keeping generated CSS small on static sites.","4 guides",1790943190466]