Skip to content

Static Site Generation ​

Built-in: bun run build statically renders these Markdown pages to HTML in .vitepress/dist, ready for CDN or GitHub Pages hosting. VitePress also supports an SSG and SSR workflow, but this site is deployed as static output.

HTML first, then optional interactivity ​

VitePress serves prerendered static HTML on the initial visit, then hydrates the site to a Vue SPA. Basic document text is available without JavaScript; local search, theme controls, the Vue Counter, Mermaid, and client-side navigation need JavaScript. The documented mpa: true mode is explicitly experimental. It ships 0kb JavaScript by default, but gives up SPA navigation and Vue event handlers unless client scripts are explicitly enabled. This sample leaves it off because its components and plugins intentionally demonstrate interactivity.

Build-time local data demonstration ​

The values below come from the typed .vitepress/comparison.data.ts local content loader:

Comparison content compiled for this build

30 criterion pages across locales
15 English criterion pages
15 distinct criterion keys

The Markdown <script setup> imports data from the loader and preserves its ComparisonData type. createContentLoader reads local frontmatter during the VitePress build; it makes no remote API request and does not fetch data in a visitor's browser. Rebuild after changing criterion frontmatter to update the static values.