A starter repository showing how to build a blog with the Eleventy site generator (using the v3.0 release).
mkdir my-blog-name
cd my-blog-name
git clone https://github.com/11ty/eleventy-base-blog.git .
Optional: Review eleventy.config.js and _data/metadata.js to configure the site’s options and data.
npm install
Generate a production-ready build to the _site folder:
npx @11ty/eleventy
Or build and host on a local development server:
npx @11ty/eleventy --serve
Or you can run debug mode to see all the internals.
--serve for speedy local builds.<img> markup if possible (single image format) but switches automatically to <picture> for multiple image formats.<picture> syntax markup with srcset and optional sizeswidth/height attributes to avoid content layout shift.loading="lazy" for native lazy loading without JavaScript.decoding="async"eleventy-plugin-bundle.draft: true to mark any template as a draft. Drafts are only included during --serve/--watch and are excluded from full builds. This is driven by the addPreprocessor configuration API in eleventy.config.js. Schema validator will show an error if non-boolean value is set in data cascade.sitemap.xmlDeploy this Eleventy site in just a few clicks on these services:
.github/workflows/gh-pages.yml.sample for information on Deploying to GitHub Pages.content/about/index.md is an example of a content page.content/blog/ has the blog posts but really they can live in any directory. They need only the posts tag to be included in the blog posts collection.eleventyNavigation key (via the Eleventy Navigation plugin) in your front matter to add a template to the top level site navigation. This is in use on content/index.njk and content/about/index.md.eleventy.config.js -> templateFormats.public folder in your input directory will be copied to the output folder (via addPassthroughCopy in the eleventy.config.js file). This means ./public/css/* will live at ./_site/css/* after your build completes._includes/layouts/base.njk: the top level HTML structure_includes/layouts/home.njk: the home page template (wrapped into base.njk)_includes/layouts/post.njk: the blog post template (wrapped into base.njk)_includes/postslist.njk is a Nunjucks include and is a reusable component used to display a list of all the posts. content/index.njk has an example of how to use it.If your site enforces a Content Security Policy (as public-facing sites should), you have a few choices (pick one):
base.njk, remove <style></style> and uncomment <link rel="stylesheet" href="">style-src: 'unsafe-inline' (less secure).