or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

content-processing.mdindex.mdplugin-configuration.mdroute-management.md
tile.json

plugin-configuration.mddocs/

Plugin Configuration

Core plugin factory function and comprehensive option validation system for configuring the Docusaurus pages plugin with customizable behavior and validation.

Capabilities

Plugin Factory Function

Creates a Docusaurus plugin instance for handling standalone pages with full configuration support.

/**
 * Main plugin factory function that creates the content pages plugin instance
 * @param context - Docusaurus load context with site configuration
 * @param options - Plugin configuration options
 * @returns Promise resolving to configured plugin instance
 */
export default function pluginContentPages(
  context: LoadContext,
  options: PluginOptions,
): Promise<Plugin<LoadedContent | null>>;

Usage Example:

import type { LoadContext } from "@docusaurus/types";
import pluginContentPages from "@docusaurus/plugin-content-pages";

const context: LoadContext = {
  siteDir: '/path/to/site',
  siteConfig: { /* site config */ },
  // ... other context properties
};

const plugin = await pluginContentPages(context, {
  path: 'src/pages',
  routeBasePath: '/',
  include: ['**/*.{js,jsx,ts,tsx,md,mdx}'],
  exclude: ['**/_*.{js,jsx,ts,tsx,md,mdx}'],
  mdxPageComponent: '@theme/MDXPage',
  showLastUpdateTime: true,
  editUrl: 'https://github.com/user/repo/edit/main/',
});

Option Validation

Validates and normalizes plugin options using comprehensive Joi schema validation.

/**
 * Validates and normalizes plugin options
 * @param args - Validation context with options to validate
 * @returns Validated and normalized plugin options
 */
export function validateOptions(
  args: OptionValidationContext<Options | undefined, PluginOptions>
): PluginOptions;

Usage Example:

import { validateOptions } from "@docusaurus/plugin-content-pages";
import { normalizePluginOptions } from "@docusaurus/utils-validation";

const validatedOptions = validateOptions({
  validate: normalizePluginOptions,
  options: {
    path: 'custom/pages',
    routeBasePath: '/pages/',
    showLastUpdateTime: true,
  },
});

Default Options

Comprehensive default configuration that can be used as a reference or starting point.

const DEFAULT_OPTIONS: PluginOptions = {
  path: 'src/pages',
  routeBasePath: '/',
  include: ['**/*.{js,jsx,ts,tsx,md,mdx}'],
  exclude: [
    '**/_*.{js,jsx,ts,tsx,md,mdx}',
    '**/_*/**',
    '**/*.test.{js,jsx,ts,tsx}',
    '**/__tests__/**',  
  ],
  mdxPageComponent: '@theme/MDXPage',
  remarkPlugins: [],
  rehypePlugins: [],
  recmaPlugins: [],
  beforeDefaultRehypePlugins: [],
  beforeDefaultRemarkPlugins: [],
  admonitions: true,
  showLastUpdateTime: false,
  showLastUpdateAuthor: false,
  editLocalizedFiles: false,
};

Configuration Options

Path and Route Options

interface PathRouteOptions {
  /** Filesystem path to pages content, relative to site directory */
  path: string;
  /** URL route base path for generated pages */
  routeBasePath: string;
  /** File patterns to include when scanning for pages */
  include: string[];
  /** File patterns to exclude when scanning for pages */
  exclude: string[];
}

Component and Display Options

interface ComponentDisplayOptions {
  /** React component used to render MDX pages */
  mdxPageComponent: string;
  /** Show last update timestamp on pages */
  showLastUpdateTime: boolean;
  /** Show last update author on pages */
  showLastUpdateAuthor: boolean;
}

Edit URL Configuration

interface EditUrlOptions {
  /** Edit URL string template or function for generating edit links */
  editUrl?: string | EditUrlFunction;
  /** Enable editing of localized files */
  editLocalizedFiles?: boolean;
}

type EditUrlFunction = (editUrlParams: {
  /** Pages directory path relative to site directory */
  pagesDirPath: string;
  /** Individual page path relative to pages directory */
  pagesPath: string;
  /** Generated permalink for the page */
  permalink: string;
  /** Current locale identifier */
  locale: string;
}) => string | undefined;

MDX Processing Options

interface MDXProcessingOptions {
  /** Remark plugins for Markdown processing */
  remarkPlugins: any[];
  /** Rehype plugins for HTML processing */
  rehypePlugins: any[];
  /** Recma plugins for MDX component processing */
  recmaPlugins: any[];
  /** Rehype plugins to run before default plugins */
  beforeDefaultRehypePlugins: any[];
  /** Remark plugins to run before default plugins */
  beforeDefaultRemarkPlugins: any[];
  /** Admonition support configuration */
  admonitions: boolean | object;
}

MDX Options Usage Example:

const options = {
  path: 'src/pages',
  remarkPlugins: [
    require('remark-math'),
    [require('remark-footnotes'), { inlineNotes: true }],
  ],
  rehypePlugins: [
    require('rehype-katex'),
  ],
  admonitions: {
    keywords: ['note', 'tip', 'info', 'caution', 'danger'],
  },
};