Personal website using 11ty and Cloudflare Pages. I've tagged previous versions of the website as releases.
ELEVENTY_ENVis eitherproductionorpreview. Defaults to not set.- Node version is set to
20via.nvmrcfile for compatibility with 11ty and dependencies.
npm start
# Starts local dev server with live reload at http://localhost:8080
# CSS is copied as-is (not minified) for easier debuggingnpm run build:prod
# Builds optimized production site with:
# - Minified CSS (PostCSS + cssnano)
# - Autoprefixed CSS for browser compatibility
# - Minified HTML
# - Optimized images (AVIF, WebP, JPEG)
# - Cache-busting asset fingerprintsThis site uses an automated asset pipeline for optimal performance:
- PostCSS with autoprefixer and cssnano
- Development: Readable CSS for debugging
- Production: Minified CSS (~78% smaller)
- Multi-format: AVIF → WebP → JPEG fallback
- Responsive: 400px, 800px, 1280px widths + original
- Quality optimized: AVIF 80%, WebP 85%, JPEG 85%
- Progressive JPEG for faster perceived loading
- Cache-busting: MD5 hashes in filenames (e.g.,
tufte.1a669404.css) - Asset manifest: JSON mapping for reference
- Production only: Maintains clean development workflow
See _build/Readme.md for detailed documentation.
The asset pipeline delivers significant improvements:
- CSS: 832 lines → 1 line, ~24% file size reduction (14KB → 11KB)
- Images: Modern AVIF format with WebP/JPEG fallbacks
- Caching: Fingerprinted assets for efficient browser caching