Docusaurus plugin that provides comprehensive documentation functionality with versioning, sidebars, and markdown processing capabilities.
npx @tessl/cli install tessl/npm-docusaurus--plugin-content-docs@3.8.0The @docusaurus/plugin-content-docs is a TypeScript plugin for Docusaurus that provides comprehensive documentation functionality. It handles markdown processing, versioning, sidebar generation, internationalization, and routing for documentation sites, transforming markdown files into structured, searchable documentation with navigation and theming support.
npm install @docusaurus/plugin-content-docsimport pluginContentDocs from "@docusaurus/plugin-content-docs";For server-side utilities:
import {
CURRENT_VERSION_NAME,
VERSIONED_DOCS_DIR,
filterVersions,
readVersionNames
} from "@docusaurus/plugin-content-docs/server";For client-side React hooks:
import {
useDocsData,
useActivePlugin,
useVersions,
useActiveVersion,
useDoc,
useDocsSidebar
} from "@docusaurus/plugin-content-docs/client";import type { Config } from '@docusaurus/types';
const config: Config = {
plugins: [
[
'@docusaurus/plugin-content-docs',
{
id: 'default',
path: 'docs',
routeBasePath: 'docs',
sidebarPath: './sidebars.js',
showLastUpdateTime: true,
showLastUpdateAuthor: true,
},
],
],
};
export default config;The plugin is built around several key systems:
Core plugin factory function and options validation for setting up documentation functionality.
function pluginContentDocs(
context: LoadContext,
options: PluginOptions,
): Promise<Plugin<LoadedContent>>;
function validateOptions(
args: OptionValidationContext<Options | undefined, PluginOptions>
): PluginOptions;React hooks for accessing documentation data, navigation state, and sidebar information in Docusaurus themes.
function useDocsData(pluginId: string | undefined): GlobalPluginData;
function useActivePlugin(options?: UseDataOptions): ActivePlugin | undefined;
function useVersions(pluginId: string | undefined): GlobalVersion[];
function useActiveVersion(pluginId: string | undefined): GlobalVersion | undefined;Version handling system for managing multiple documentation versions with independent content and configuration.
function filterVersions(
availableVersions: string[],
options: Pick<PluginOptions, 'onlyIncludeVersions' | 'includeCurrentVersion' | 'lastVersion'>
): string[];
function readVersionNames(versionsJsonFile: string): Promise<string[]>;Sidebar generation and processing system for creating hierarchical navigation structures from content organization.
function loadSidebars(
sidebarFilePath: string | false | undefined,
options: SidebarProcessorParams,
): Promise<Sidebars>;
const DefaultSidebarItemsGenerator: SidebarItemsGeneratorOption;interface PluginOptions extends MetadataOptions, PathOptions, VersionsOptions, MDXOptions, SidebarOptions {
id: string;
include: string[];
exclude: string[];
docsRootComponent: string;
docVersionRootComponent: string;
docRootComponent: string;
docItemComponent: string;
docTagDocListComponent: string;
docTagsListComponent: string;
docCategoryGeneratedIndexComponent: string;
sidebarItemsGenerator: SidebarItemsGeneratorOption;
tagsBasePath: string;
}
interface LoadedContent {
loadedVersions: LoadedVersion[];
}
interface GlobalPluginData {
path: string;
versions: GlobalVersion[];
breadcrumbs: boolean;
}
interface GlobalVersion {
name: string;
label: string;
isLast: boolean;
path: string;
mainDocId: string;
docs: GlobalDoc[];
draftIds: string[];
sidebars?: {[sidebarId: string]: GlobalSidebar};
}
interface GlobalDoc {
id: string;
path: string;
sidebar?: string;
unlisted?: boolean;
}