Data Layer and Content Sourcing
How each static site generator pulls content in from different sources.
Astro
Content collections can source from local Markdown/MDX files or, via loaders, from external APIs and CMSs, exposed through a type-safe query API rather than a dedicated query language.
VuePress
Sources content primarily from local Markdown files organized on disk; pulling from external CMSs or APIs typically requires custom plugins rather than a built-in data layer.
VitePress
Like VuePress, sources content primarily from local Markdown files, with no built-in unified data layer for external sources.
Gatsby
Its defining feature: a GraphQL data layer that unifies content from local files, headless CMSs, and APIs into one consistent, queryable schema available to every page at build time.
Docusaurus
Sources content primarily from local Markdown/MDX files following its docs/blog conventions; external data sourcing is handled through its plugin system rather than a built-in unified layer.
Eleventy
Sources data from local files (Markdown, JSON, YAML, JS) and any custom “data files” you write, giving direct, code-level control over how external APIs are fetched rather than a declarative query layer.
Hugo
Sources content primarily from local files organized in its content directory, with support for pulling remote data through its getJSON/getCSV template functions.
Jekyll
Sources content primarily from local files and its collections feature; external data can be pulled in via the _data folder (YAML/JSON/CSV) rather than a live query layer.
Zola
Sources content primarily from local Markdown files organized into sections, with a load_data template function available for pulling in external JSON, TOML, CSV, or remote data at build time.