Astro vs Eleventy for Documentation Sites
Direct architectural comparison of Astro and Eleventy for documentation workflows. This analysis focuses on build pipelines, component rendering, and deployment optimization. Teams evaluating static site generators must weigh island architecture against zero-JS defaults. Understanding foundational evaluation criteria is essential before committing to a framework. Choosing the Right Static Site Generator for Production provides a baseline for architectural decision-making.
Step-by-Step Implementation Architecture
Project Initialization & Routing Conventions
Initialize your documentation repository using framework-specific CLI tools. Both generators rely on file-based routing, but their directory structures differ significantly. Run the following commands to scaffold a clean workspace:
npm create astro@latest docs-site
npx @11ty/eleventy@latest
Astro routes map directly to src/pages/. Eleventy uses src/ with configurable input directories. Configure your base path early to prevent broken asset links during staging.
Markdown Processing & Collection Filtering
Documentation sites require consistent frontmatter parsing and automated table of contents generation. Astro leverages remark and rehype plugins natively. Eleventy uses markdown-it or custom Liquid filters.
// astro.config.mjs
import { defineConfig } from 'astro/config';
import mdx from '@astrojs/mdx';
export default defineConfig({
markdown: {
remarkPlugins: [remarkGfm, remarkToc],
rehypePlugins: [rehypeSlug]
},
integrations: [mdx()]
});
This configuration automates heading anchoring and sidebar generation. Eleventy handles versioned documentation through explicit collection filtering.
// .eleventy.js
module.exports = function(eleventyConfig) {
eleventyConfig.addCollection("docs", function(collectionApi) {
return collectionApi.getFilteredByGlob("src/docs/**/*.md").sort((a, b) => {
return a.data.version - b.data.version;
});
});
};
The Eleventy approach sorts markdown files by version metadata. It enables dynamic routing without client-side JavaScript.
CI/CD Pipeline Integration
Automated Builds & Dependency Caching
Documentation teams require reproducible build environments. GitHub Actions workflows must cache dependencies and framework artifacts to reduce execution time.
name: Deploy Docs
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- uses: actions/cache@v3
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: ${{ runner.os }}-node-
Implementing incremental build caching prevents redundant compilation across workflow runs. Full rebuilds on every commit cause pipeline bottlenecks for repositories exceeding 500 files.
Preview Deployments & Quality Gates
Configure environment variables to route pull request previews to isolated subdomains. Integrate Lighthouse CI thresholds to enforce Core Web Vitals standards before merging. Compare baseline metrics against established benchmarks like Hugo Build Times for Large Repositories to validate your pipeline efficiency.
Measurable Optimization & Performance Tuning
Asset Compression & Image Pipelines
Documentation sites often contain heavy diagrams and screenshots. Implement automated image optimization during the build phase. Astro provides @astrojs/image for on-demand resizing. Eleventy integrates eleventy-img with a Sharp pipeline for synchronous processing.
Configure parallelization and worker threads to accelerate asset generation. Monitor hydration overhead to eliminate unused JavaScript. Astro islands should only hydrate interactive components like search bars or version switchers.
Core Web Vitals & Runtime Metrics
Track Time to First Byte (TTFB) and First Contentful Paint (FCP) across staging and production environments. Zero-JS architectures consistently achieve sub-100ms TTFB. Use synthetic monitoring to detect regression in bundle sizes after dependency updates. Teams migrating from legacy platforms should evaluate plugin overhead carefully, similar to analyzing the Jekyll Plugin Ecosystem in 2024.
Common Pitfalls & Mitigation Strategies
- Over-fetching data in Astro islands: Unnecessary client-side hydration increases bundle size. It degrades Lighthouse performance scores for documentation pages. Restrict hydration directives to
client:visibleorclient:idle. - Eleventy pagination conflicts: Default pagination logic breaks when documentation URLs require custom slugs. Override routing with
permalinkfunctions in frontmatter to maintain nested directory structures. - Missing incremental build configuration: Full rebuilds on every commit cause pipeline bottlenecks. Cache
.astro/and.cache/directories explicitly in your CI runner.
Frequently Asked Questions
Which SSG handles large documentation repositories faster? Eleventy typically outperforms Astro in raw build speed for 1000+ markdown files. Synchronous processing and zero client-side hydration overhead reduce compilation latency.
How do I implement versioned documentation in Astro?
Use dynamic route parameters with getStaticPaths(). Map version directories to localized content collections using Astro's content routing API.
Can Eleventy support interactive documentation components?
Yes. Integrate Alpine.js or vanilla JavaScript via eleventy-plugin-scripts. This approach avoids full framework hydration while maintaining interactivity.
What CI/CD caching strategy minimizes documentation build times?
Cache node_modules, framework-specific .cache directories, and output dist/ folders. Utilize GitHub Actions cache keys or Vercel build hooks for deterministic artifact restoration.