Skip to content

Migrate build system from mdbook to Eleventy - #306

Merged
wesbiggs merged 1 commit into
mainfrom
feat/eleventy-migration
Jul 11, 2026
Merged

Migrate build system from mdbook to Eleventy#306
wesbiggs merged 1 commit into
mainfrom
feat/eleventy-migration

Conversation

@wesbiggs

Copy link
Copy Markdown
Member

Problem

mdbook build architecture is getting crusty and requires some heavy tooling.

Solution

replace mdbook with 11ty; rework templates to fit

Details

Replaces the Rust-based mdbook toolchain with a Node.js-only build using Eleventy 3.x, markdown-it, and linkinator. All 49 markdown source files and SUMMARY.md are unchanged; navigation is parsed from SUMMARY.md at build time.

  • Add .eleventy.js with markdown-it config, internal .md link rewriting, Nunjucks filters, and passthrough copies for fonts/CSS/JS assets
  • Add _data/nav.js: SUMMARY.md parser producing tree + flat nav structures
  • Add _includes/base.njk, page.njk, sidebar.njk with active/ancestor state
  • Add theme stubs (ayu-highlight.css, tomorrow-night.css) and self-hosted clipboard.min.js required by book.js
  • Trim book.js: remove Rust playground IIFE, keep hljs and clipboard logic
  • Rename localStorage keys from mdbook-* to dsnp-*
  • Update CI workflows to use npm ci + eleventy + linkinator; remove mdbook composite action and book.toml
  • Pin all package.json devDependencies to exact versions; bump engines to >=20

Testing

Build and browse. There should be no noticeable changes to the site vs. the published version at spec.dsnp.org.

Comment thread eleventy.config.js Fixed
Comment thread eleventy.config.js Fixed
Comment thread eleventy.config.js Fixed
Replaces the Rust-based mdbook toolchain with a Node.js-only build using
Eleventy 3.x, markdown-it, and linkinator. All 49 markdown source files and
SUMMARY.md are unchanged; navigation is parsed from SUMMARY.md at build time.

- Add eleventy.config.js with markdown-it config, internal .md link rewriting,
  Nunjucks filters, and passthrough copies for fonts/CSS/JS assets
- Add _data/nav.js: SUMMARY.md parser producing tree + flat nav structures
- Add _includes/base.njk, page.njk, sidebar.njk with active/ancestor state
- Add theme stubs (ayu-highlight.css, tomorrow-night.css) and self-hosted
  clipboard.min.js required by book.js
- Trim book.js: remove Rust playground IIFE, keep hljs and clipboard logic
- Rename localStorage keys from mdbook-* to dsnp-*
- Update CI workflows to use npm ci + eleventy + linkinator; remove mdbook
  composite action and book.toml
- Pin all package.json devDependencies to exact versions; bump engines to >=20
- Remove unused package.json fields and tsconfig.json
- Combine build and linkcheck in the verify workflow as the latter now relies on the HTML
- Update package versions and audit vulnerabilities
- Update spellchecker dictionary as needed
- Add pagefind search and page title extraction
@wesbiggs
wesbiggs force-pushed the feat/eleventy-migration branch from 0ed24d7 to 08c7385 Compare July 11, 2026 02:33
@wesbiggs
wesbiggs merged commit c43bba4 into main Jul 11, 2026
4 checks passed
@wesbiggs
wesbiggs deleted the feat/eleventy-migration branch July 11, 2026 02:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants