[{"data":1,"prerenderedAt":127},["ShallowReactive",2],{"hub:tools-jekyll":3},{"path":4,"key":5,"title":6,"h1":7,"description":8,"crumbs":9,"blocks":17},"\u002Ftools\u002Fjekyll\u002F","tools-jekyll","Jekyll in Production: Plugins, Builds, Migration","Jekyll","Guides for teams running Jekyll: GitHub Pages plugin limits, reproducible Docker builds, faster builds, Ruby upgrades and migrating away.",[10,13,16],[11,12],"Home","\u002F",[14,15],"Tools","\u002Ftools\u002F",[7,4],[18,21,23,26,86,88,95,97],{"k":19,"text":20},"p","Jekyll still runs a great many documentation sites and blogs, usually because GitHub Pages made it the default years ago. The guides below are written for teams living with that choice: working within or around the GitHub Pages plugin allowlist, making Ruby toolchains reproducible, speeding up builds that grew slow, and upgrading Jekyll and Ruby without breaking output.",{"k":19,"text":22},"For teams ready to leave, the migration guides cover the two common destinations — Eleventy, which keeps Liquid templates familiar, and Hugo — including how to replace each plugin and keep every URL working.",{"k":24,"html":25},"fig","\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 246\" role=\"img\" aria-labelledby=\"hub-jekyll-hero-title hub-jekyll-hero-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-jekyll-hero-title\">Paths for a team running Jekyll\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-jekyll-hero-desc\">The root asks what hurts most. Plugin limits on GitHub Pages lead to building with GitHub Actions instead. Inconsistent Ruby toolchains lead to a Docker image. Slow builds lead to incremental builds and profiling. Wanting to leave leads to migration guides for Eleventy or Hugo.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"246\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"250.0\" y=\"60.0\" width=\"260.0\" height=\"50.0\" rx=\"8\" fill=\"#6a4c93\" opacity=\"0.14\" stroke=\"#6a4c93\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M380.0 111.0 L380.0 132.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px\"\u002F>\n    \u003Cpath d=\"M103.2 132.0 L656.8 132.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px\"\u002F>\n    \u003Cpath d=\"M103.2 132.0 L103.2 150.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-jekyll-hero-arrow)\"\u002F>\n    \u003Crect x=\"20.0\" y=\"154.0\" width=\"166.5\" height=\"75.5\" rx=\"8\" fill=\"#1982c4\" opacity=\"0.14\" stroke=\"#1982c4\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M287.8 132.0 L287.8 150.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-jekyll-hero-arrow)\"\u002F>\n    \u003Crect x=\"204.5\" y=\"154.0\" width=\"166.5\" height=\"75.5\" rx=\"8\" fill=\"#6a4c93\" opacity=\"0.14\" stroke=\"#6a4c93\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M472.2 132.0 L472.2 150.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-jekyll-hero-arrow)\"\u002F>\n    \u003Crect x=\"389.0\" y=\"154.0\" width=\"166.5\" height=\"75.5\" rx=\"8\" fill=\"#ffca3a\" opacity=\"0.24\" stroke=\"#a97b00\" style=\"stroke-width:1.5px\"\u002F>\n    \u003Cpath d=\"M656.8 132.0 L656.8 150.0\" fill=\"none\" stroke=\"#556071\" style=\"stroke-width:2px;marker-end:url(#hub-jekyll-hero-arrow)\"\u002F>\n    \u003Crect x=\"573.5\" y=\"154.0\" width=\"166.5\" height=\"75.5\" rx=\"8\" fill=\"#8ac926\" opacity=\"0.2\" stroke=\"#5a8a16\" 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\">Staying on Jekyll or moving on?\u003C\u002Ftext>\n    \u003Ctext x=\"380.0\" y=\"90.2\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">What hurts most today?\u003C\u002Ftext>\n    \u003Ctext x=\"103.2\" y=\"170.0\" fill=\"#166a9e\" style=\"font-size:11px;text-anchor:middle;font-weight:700\">Plugin allowlist\u003C\u002Ftext>\n    \u003Ctext x=\"103.2\" y=\"190.3\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Build in Actions\u003C\u002Ftext>\n    \u003Ctext x=\"103.2\" y=\"207.2\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">any plugin, any version\u003C\u002Ftext>\n    \u003Ctext x=\"287.8\" y=\"170.0\" fill=\"#6a4c93\" style=\"font-size:11px;text-anchor:middle;font-weight:700\">Ruby on laptops\u003C\u002Ftext>\n    \u003Ctext x=\"287.8\" y=\"190.3\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Docker image\u003C\u002Ftext>\n    \u003Ctext x=\"287.8\" y=\"207.2\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">same toolchain everywhere\u003C\u002Ftext>\n    \u003Ctext x=\"472.2\" y=\"170.0\" fill=\"#8a6d0f\" style=\"font-size:11px;text-anchor:middle;font-weight:700\">Slow builds\u003C\u002Ftext>\n    \u003Ctext x=\"472.2\" y=\"190.3\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Profile and cache\u003C\u002Ftext>\n    \u003Ctext x=\"472.2\" y=\"207.2\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">incremental, fewer plugins\u003C\u002Ftext>\n    \u003Ctext x=\"656.8\" y=\"170.0\" fill=\"#3f6410\" style=\"font-size:11px;text-anchor:middle;font-weight:700\">Time to leave\u003C\u002Ftext>\n    \u003Ctext x=\"656.8\" y=\"190.3\" fill=\"#1f2937\" style=\"font-size:13px;text-anchor:middle;font-weight:700\">Migrate\u003C\u002Ftext>\n    \u003Ctext x=\"656.8\" y=\"207.2\" fill=\"#556071\" style=\"font-size:11px;text-anchor:middle\">Eleventy or Hugo\u003C\u002Ftext>\n  \u003C\u002Fg>\n  \u003Cdefs>\n    \u003Cmarker id=\"hub-jekyll-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>Each branch corresponds to a group of guides below.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":28,"items":29},"group","Choosing the Right Static Site Generator for Production",[30,35,40,44,49,53,57,61,65,69,73,77,82],{"t":31,"u":32,"d":33,"y":34},"Eleventy vs Jekyll for Markdown-Heavy Blogs","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Feleventy-vs-jekyll-for-markdown-heavy-blogs\u002F","For thousands of Markdown files, compare Eleventy and Jekyll on parser config, data cascade, incremental-build reliability, and real build numbers from a 5,000-post corpus.","Comparison",{"t":36,"u":37,"d":38,"y":39},"Picking an SSG for a Multi-Language Docs Site","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fpicking-an-ssg-for-a-multi-language-documentation-site\u002F","Compare i18n in Astro, Hugo, Eleventy, and Jekyll for multi-language documentation — routing, content organization, and build cost — with measured numbers across locales.","Concept",{"t":41,"u":42,"d":43,"y":39},"Scoring SSG Long-Term Maintenance Risk","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fssg-framework-selection-matrix\u002Fscoring-ssg-long-term-maintenance-risk\u002F","Score a static site generator’s five-year maintenance risk: project health, upgrade history, dependency surface, plugin ecosystem and your exit cost.",{"t":45,"u":46,"d":47,"y":48},"Custom Domains and HTTPS for Jekyll on GitHub Pages","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Fcustom-domains-and-https-for-jekyll-on-github-pages\u002F","Point a custom domain at a Jekyll site on GitHub Pages, get HTTPS enforced, fix certificate and DNS errors, and keep url and baseurl correct in _config.yml.","How-to",{"t":50,"u":51,"d":52,"y":48},"Deploying Jekyll with GitHub Actions","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Fdeploying-jekyll-with-github-actions\u002F","Replace the classic GitHub Pages Jekyll builder with a GitHub Actions workflow: any plugin, any Jekyll version, caching, previews and Pages deployment.",{"t":54,"u":55,"d":56,"y":48},"Migrating a Docs Site From Jekyll to Hugo","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fmigrating-between-static-site-generators\u002Fmigrating-a-docs-site-from-jekyll-to-hugo\u002F","Convert Jekyll collections, Liquid includes and permalinks to Hugo sections, partials and URL config — with a build that drops from 96 s to 3.4 s on 1,200 pages.",{"t":58,"u":59,"d":60,"y":48},"Porting Shortcodes and Includes Between Generators","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fmigrating-between-static-site-generators\u002Fporting-shortcodes-and-includes-between-generators\u002F","Map Jekyll includes, Hugo shortcodes, Eleventy shortcodes and MDX components onto each other — with a census-first strategy, stub-then-port order, and a rendering test per component.",{"t":62,"u":63,"d":64,"y":48},"Replacing Jekyll Plugins When Migrating to Eleventy","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Freplacing-jekyll-plugins-when-migrating-to-eleventy\u002F","Map common Jekyll plugins — jekyll-seo-tag, jekyll-feed, jekyll-paginate, jekyll-picture-tag — to their Eleventy equivalents, with config and measured build impact.",{"t":66,"u":67,"d":68,"y":48},"Running Jekyll in Docker for Reproducible Builds","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Frunning-jekyll-in-docker-for-reproducible-builds\u002F","Build a Jekyll site in a pinned Docker image so writers, CI and production use the same Ruby, gems and native extensions, with fast cached rebuilds.",{"t":70,"u":71,"d":72,"y":48},"Running Jekyll on GitHub Pages Without Plugins","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Frunning-jekyll-on-github-pages-without-plugins\u002F","The allowlist blocks most gems. Replace plugin behaviour with Liquid, data files and a build step — or take the Actions route and keep the plugins you actually need.",{"t":74,"u":75,"d":76,"y":48},"Upgrading Jekyll and Ruby Versions Safely","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Fupgrading-jekyll-and-ruby-versions-safely\u002F","Move an old Jekyll 3 site to Jekyll 4 and a supported Ruby without breaking pages: pin versions, upgrade in steps, diff the built output and fix what changes.",{"t":78,"u":79,"d":80,"y":81},"Fixing Jekyll Builds That Break After a Ruby Upgrade","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Ffixing-jekyll-builds-that-break-after-a-ruby-upgrade\u002F","Fix the errors Jekyll sites hit on new Ruby versions, from missing webrick and stdlib gems to native extensions and date changes, then pin Ruby.","Fix",{"t":83,"u":84,"d":85,"y":81},"Speeding Up Slow Jekyll Builds","\u002Fchoosing-the-right-static-site-generator-for-production\u002Fjekyll-plugin-ecosystem\u002Fspeeding-up-slow-jekyll-builds\u002F","Profile a slow Jekyll build, find the Liquid loops and plugins that dominate it, and apply caching and template fixes that cut build time by over 80%.",{"k":24,"html":87},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 295\" role=\"img\" aria-labelledby=\"hub-jekyll-kinds-title hub-jekyll-kinds-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-jekyll-kinds-title\">Number of Jekyll guides of each kind\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-jekyll-kinds-desc\">Vertical bars: How-tos 8, Fixes 2, Comparisons 2 and Concepts 2.\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=\"80.0\" y=\"76.0\" width=\"90.0\" height=\"170.0\" rx=\"3\" fill=\"#1982c4\" opacity=\"0.3\" stroke=\"#1982c4\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"250.0\" y=\"203.5\" width=\"90.0\" height=\"42.5\" rx=\"3\" fill=\"#ff595e\" opacity=\"0.3\" stroke=\"#d83b41\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"420.0\" y=\"203.5\" width=\"90.0\" height=\"42.5\" rx=\"3\" fill=\"#ffca3a\" opacity=\"0.45\" stroke=\"#a97b00\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"590.0\" y=\"203.5\" width=\"90.0\" height=\"42.5\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" 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\">Jekyll guides by kind\u003C\u002Ftext>\n    \u003Ctext x=\"125.0\" y=\"69.0\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">8\u003C\u002Ftext>\n    \u003Ctext x=\"125.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">How-tos\u003C\u002Ftext>\n    \u003Ctext x=\"295.0\" y=\"196.5\" fill=\"#b32b30\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"295.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Fixes\u003C\u002Ftext>\n    \u003Ctext x=\"465.0\" y=\"196.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"465.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Comparisons\u003C\u002Ftext>\n    \u003Ctext x=\"635.0\" y=\"196.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:middle;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"635.0\" y=\"264.0\" fill=\"#556071\" style=\"font-size:11.5px;text-anchor:middle\">Concepts\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>14 guides use Jekyll in depth; each is listed below under the section it belongs to.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":89,"items":90},"Production-Ready Deployment & CI\u002FCD for SSGs",[91],{"t":92,"u":93,"d":94,"y":34},"Vercel ISR vs Static Generation for SSGs","\u002Fproduction-ready-deployment-cicd-workflows\u002Fnetlify-vs-vercel-deployment-strategies\u002Fvercel-isr-vs-static-generation-for-ssgs\u002F","ISR rebuilds pages on demand; static generation builds everything upfront. Astro, Eleventy, Hugo, and Jekyll have no ISR — they rebuild and purge at the CDN.",{"k":24,"html":96},"\u003Cfigure>\n\u003Csvg viewBox=\"0 0 760 210\" role=\"img\" aria-labelledby=\"hub-jekyll-topics-title hub-jekyll-topics-desc\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\n  \u003Ctitle id=\"hub-jekyll-topics-title\">Topics with the most Jekyll guides\u003C\u002Ftitle>\n  \u003Cdesc id=\"hub-jekyll-topics-desc\">Horizontal bars, largest first: Jekyll Plugin Ecosystem 9, Migrating Between Static Site Generators 2, SSG Framework Selection Matrix 2 and Netlify vs Vercel Deployment Strategies 1.\u003C\u002Fdesc>\n  \u003Crect x=\"0\" y=\"0\" width=\"760\" height=\"210\" fill=\"#ffffff\"\u002F>\n  \u003Cg style=\"font-family:system-ui, sans-serif;font-size:12px\">\n    \u003Crect x=\"350.0\" y=\"65.0\" width=\"365.6\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"99.0\" width=\"81.2\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"133.0\" width=\"81.2\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Crect x=\"350.0\" y=\"167.0\" width=\"40.6\" height=\"20.0\" rx=\"3\" fill=\"#6a4c93\" opacity=\"0.3\" stroke=\"#6a4c93\" style=\"stroke-width:1px\"\u002F>\n    \u003Cpath d=\"M350.0 60.0 L350.0 192.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\">Where Jekyll comes up\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"79.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Jekyll Plugin Ecosystem\u003C\u002Ftext>\n    \u003Ctext x=\"723.6\" y=\"79.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">9\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"113.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Migrating Between Static Site Generators\u003C\u002Ftext>\n    \u003Ctext x=\"439.2\" y=\"113.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"147.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">SSG Framework Selection Matrix\u003C\u002Ftext>\n    \u003Ctext x=\"439.2\" y=\"147.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">2\u003C\u002Ftext>\n    \u003Ctext x=\"20.0\" y=\"181.2\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start\">Netlify vs Vercel Deployment Strategies\u003C\u002Ftext>\n    \u003Ctext x=\"398.6\" y=\"181.5\" fill=\"#1f2937\" style=\"font-size:12px;text-anchor:start;font-weight:700\">1\u003C\u002Ftext>\n  \u003C\u002Fg>\n\u003C\u002Fsvg>\n\u003Cfigcaption>Topic pages give the wider context for each group; the numbers count only guides that use this tool in depth.\u003C\u002Ffigcaption>\n\u003C\u002Ffigure>",{"k":27,"h":98,"items":99},"Often used with Jekyll",[100,105,109,114,118,123],{"t":101,"u":102,"d":103,"y":104},"Eleventy","\u002Ftools\u002Feleventy\u002F","Incremental builds, image pipelines and the data cascade.","5 shared guides",{"t":106,"u":107,"d":108,"y":104},"Hugo","\u002Ftools\u002Fhugo\u002F","Build time at scale, image caches, modules and multilingual sites.",{"t":110,"u":111,"d":112,"y":113},"GitHub Pages","\u002Ftools\u002Fgithub-pages\u002F","Publishing from Actions and custom domains.","3 shared guides",{"t":115,"u":116,"d":117,"y":113},"Astro","\u002Ftools\u002Fastro\u002F","Islands, content collections, astro:assets and deployment.",{"t":119,"u":120,"d":121,"y":122},"GitHub Actions","\u002Ftools\u002Fgithub-actions\u002F","Caching, matrix builds, reusable workflows and pinning.","1 shared guides",{"t":124,"u":125,"d":126,"y":122},"Next.js","\u002Ftools\u002Fnextjs\u002F","Static export for content sites, its limits and alternatives.",1790943190466]