Visit Page
1
0
Fork
You've already forked pages
0
  • JavaScript 36.9%
  • Nunjucks 32%
  • CSS 31.1%
BensonC 8b05031c8f
All checks were successful
Publish / publish (push) Successful in 1m40s
ping
2026年06月12日 20:20:38 +08:00
.forgejo/workflows ci: Fix 2026年06月12日 20:09:23 +08:00
.github Disable GitHub Actions dependabot updates because they don’t apply to this branch 2026年03月13日 13:48:54 -05:00
_config 用中文顯示日期 2026年06月07日 15:32:29 +08:00
_data Tweak 2026年06月07日 17:58:46 +08:00
_includes Use prism-tomorrow theme 2026年06月12日 20:13:42 +08:00
content Add Tags page in navigation bar 2026年06月07日 22:35:37 +08:00
css Don't capitalize tag name 2026年06月07日 22:28:33 +08:00
public/img Move css to separate folder for better reload 2025年04月21日 16:42:05 -05:00
.editorconfig Convert to tabs 2023年01月23日 11:37:44 -06:00
.gitattributes Exclude Atom feed stylesheet from GitHub Linguist 2025年05月10日 18:14:23 -04:00
.gitignore Update .gitignore file 2026年06月12日 20:03:31 +08:00
.nojekyll Fixes https://github.com/11ty/eleventy-base-blog/issues/87 2022年06月29日 14:28:21 -05:00
.nvmrc Use official GitHub Actions for Pages upload workflow 2026年03月13日 12:00:58 -05:00
eleventy.config.js Add Tags page in navigation bar 2026年06月07日 22:35:37 +08:00
LICENSE Add CSS for fluid width images 2024年11月15日 17:09:48 -06:00
netlify.toml Remove Netlify plugins 2024年09月11日 16:15:15 -05:00
package-lock.json Upgrade core to v3.1.6 2026年06月02日 17:04:54 -05:00
package.json Upgrade core to v3.1.6 2026年06月02日 17:04:54 -05:00
ping ping 2026年06月12日 20:20:38 +08:00
README.md Remove glitch from readme 2025年09月13日 21:08:17 -07:00
vercel.json Always use trailingSlash: true on Vercel 2024年09月27日 17:04:09 -05:00

eleventy-base-blog v9

A starter repository showing how to build a blog with the Eleventy site generator (using the v3.0 release).

Getting Started

  1. Make a directory and navigate to it:
mkdir my-blog-name
cd my-blog-name
  1. Clone this Repository
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.

  1. Install dependencies
npm install
  1. Run Eleventy

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.

Features

  • Using Eleventy v3 with zero-JavaScript output.
  • Performance focused: four-hundos Lighthouse score out of the box!
    • 0 Cumulative Layout Shift
    • 0ms Total Blocking Time
  • Local development live reload provided by Eleventy Dev Server.
  • Content-driven navigation menu
  • Fully automated Image optimization
    • Zero-JavaScript output.
    • Support for modern image formats automatically (e.g. AVIF and WebP)
    • Processes images on-request during --serve for speedy local builds.
    • Prefers <img> markup if possible (single image format) but switches automatically to <picture> for multiple image formats.
    • Automated <picture> syntax markup with srcset and optional sizes
    • Includes width/height attributes to avoid content layout shift.
    • Includes loading="lazy" for native lazy loading without JavaScript.
    • Includes decoding="async"
    • Images can be co-located with blog post files.
  • Per page CSS bundles via eleventy-plugin-bundle.
  • Built-in syntax highlighter (zero-JavaScript output).
  • Draft content: use 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.
  • Blog Posts
    • Automated next/previous links
    • Accessible deep links to headings
  • Generated Pages

Demos

Deploy this to your own site

Deploy this Eleventy site in just a few clicks on these services:

Implementation Notes

  • 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.
  • Use the 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.
  • Content can be in any template format (blog posts needn’t exclusively be markdown, for example). Configure your project’s supported templates in eleventy.config.js -> templateFormats.
  • The 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.
  • This project uses three Eleventy Layouts:
    • _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.

Content Security Policy

If your site enforces a Content Security Policy (as public-facing sites should), you have a few choices (pick one):

  1. In base.njk, remove <style>{% getBundle "css" %}</style> and uncomment <link rel="stylesheet" href="{% getBundleFileUrl "css" %}">
  2. Configure the server with the CSP directive style-src: 'unsafe-inline' (less secure).