CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-docusaurus--plugin-content-pages

Docusaurus plugin for creating and managing standalone pages with MDX and JSX support.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

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'],
  },
};

Install with Tessl CLI

npx tessl i tessl/npm-docusaurus--plugin-content-pages

docs

content-processing.md

index.md

plugin-configuration.md

route-management.md

tile.json