Source API
Turn a content source into a unified interface
Usage
Source API is a helper to load file-system based content sources, it offers a unified interface to integrate content sources with Fumadocs.
What it does?
- Generate page trees based on file system
- Generate Urls and slugs based on file path
- Output useful utilities to search or walk over files
It doesn't rely on the real file system (zero node:fs
usage), a virtual storage is also allowed.
You can use it with built-in content sources like Fumadocs MDX.
The output page tree strictly follows Page Conventions.
Base URL
The loader generates a URL for each page, you can override the default base URL.
Icons
Load the icon property specified by pages and meta files.
I18n
Pass the i18n
config to loader.
With i18n enabled, loader will generate a page tree for every locale.
When looking for a page, it fallbacks to default locale if the page doesn't exist for specified locale.
Output
The loader outputs a source object.
Get Page
Get page with slugs.
Get Pages
Get a list of page available for locale.
Page Tree
Get from Node
The page tree nodes contain references to their original file path. You can find their original page or meta file from the tree nodes.
Params
A function to generate output for Next.js generateStaticParams
.
The generated parameter names will be slug: string[]
and lang: string
(i18n only).
Language Entries
Get available languages and its pages.
Deep Dive
As mentioned, Source API doesn't rely on real file systems. During the process, your input source files will be parsed and form a virtual storage to avoid inconsistent behaviour between different OS.
Root Directory
Filter the input files by its parent directory.
Content sources only provide a virtual file path to the loader (like test/index.mdx
).
Relative paths such as ./
and ../
are not supported.
Be Careful
This is not equivalent to your content directory configured on content source (e.g. Fumadocs MDX dir
option).
Please use relevant options on your source instead.
Transformer
To perform virtual file-system operations before processing, you can add a transformer.
Page Tree
The page tree is generated from your file system, using the Page Tree Builder. It also filters out some unnecessary information (e.g. unused frontmatter properties).
To customise the process, use the pageTree
option.
You can attach custom properties to page tree nodes, like customising the display name of pages and folders.
Custom Source
To plug your own content source, create a Source
object.
It includes a files
property which is an array of virtual files.
Each virtual file must contain its file path and corresponding data.
You can check type definitions for more info.
Since Source API doesn't rely on file system, file paths cannot be absolute or relative (for example, ./file.mdx
and D://content/file.mdx
are not allowed).
Instead, pass the file paths like file.mdx
and content/file.mdx
.
Last updated on