For AI agents: the complete documentation index is available at /rspress-russian/llms.txt, the full documentation bundle is available at /rspress-russian/llms-full.txt, and this page is available as Markdown at /rspress-russian/plugin/official-plugins/api-docgen.md.
close

@rspress/plugin-api-docgen

Этот плагин автоматически генерирует контент документации API, используя пакеты react-docgen-typescript и documentation.

Установка

npm
yarn
pnpm
bun
deno
npm add @rspress/plugin-api-docgen -D

Использование

Сначала добавьте следующую конфигурацию:

// rspress.config.ts
import path from 'path';
import { defineConfig } from '@rspress/core';
import { pluginApiDocgen } from '@rspress/plugin-api-docgen';

export default defineConfig({
  plugins: [
    pluginApiDocgen({
      entries: {
        button: './src/index.ts',
      },
      apiParseTool: 'react-docgen-typescript',
    }),
  ],
});

Затем используйте компонент API для вставки документации API в файл MDX:

## API

Таблица API

<API moduleName="button" />

Конфигурация

Плагин принимает объект следующего типа:

interface Options {
  entries?: Record<string, string>;
  apiParseTool?: 'react-docgen-typescript' | 'documentation';
  appDir?: string;
  parseToolOptions?: ParseToolOptions;
}

appDir

appDir настраивает базовую директорию для парсинга. По умолчанию используется process.cwd().

entries

entries настраивает файлы для парсинга.

  • Ключ — это идентификатор, используемый как атрибут moduleName компонента API.
  • Значение — относительный путь к парсируемому файлу.

apiParseTool

apiParseTool выбирает парсер. По умолчанию используется react-docgen-typescript:

  • react-docgen-typescript используется для сценариев библиотек компонентов. Он парсит пропсы для генерации таблиц.
export type ButtonProps = {
  /**
   * Отключена ли кнопка?
   */
  disabled?: boolean;
  /**
   * Тип кнопки
   * @default 'default'
   */
  size?: 'mini' | 'small' | 'default' | 'large';
};
export const Button = (props?: ButtonProps) => {};

В этой стандартной форме ButtonProps извлекается в таблицу, а Button используется как заголовок таблицы. Если вы используете экспорт по умолчанию, в качестве заголовка таблицы используется имя файла.

Обратите внимание, что экспорты, объявленные в других местах, недоступны.

const A = () => {};

export { A }; // неправильно
export default A; // неправильно
export const B = () => {}; // правильно
export default () => {}; // правильно

Сгенерированный контент будет выглядеть следующим образом:

### ButtonTest

|   Проп   |      Описание       |                     Тип                     | Значение по умолчанию |
| :------: | :-----------------: | :-----------------------------------------: | :-------------------: |
| disabled | Отключена ли кнопка |                  `boolean`                  |          `-`          |
|   size   |    Размер кнопки    | `"mini" \| "small" \| "default" \| "large"` |      `'default'`      |
Предупреждение

Если пропсы используют типы React, добавьте эти типы в tsconfig.json; в противном случае типы в пространстве имён React не смогут быть разрешены.

{
  "compilerOptions": {
    "types": ["react"]
  }
}

Лучший подход — импортировать тип напрямую:

import { FC } from 'react';
  • documentation используется в сценариях утилитарных библиотек для парсинга аннотаций JSDoc. Вот функция greet с аннотациями JSDoc.
/**
 * Функция приветствия, возвращающая приветственное сообщение.
 * @param {string} name - Имя человека, которого нужно поприветствовать.
 * @param {string} [greeting='Привет'] - Приветствие, которое будет использовано.
 * @returns {string} Приветственное сообщение.
 */
function greet(name: string, greeting = 'Привет') {
  return `${greeting}, ${name}!`;
}

Сгенерированный контент будет выглядеть следующим образом:

<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

## greet

Функция приветствия, возвращающая приветственное сообщение.

### Parameters

- `name` **[string][1]** Имя человека, которого нужно поприветствовать.
- `greeting` **[string][1]** Приветствие, которое будет использовано. (optional, default `'Hello'`)

Returns **[string][1]** Приветственное сообщение.

[1]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String

parseToolOptions

parseToolOptions передает параметры выбранному парсеру. Его тип:

type ParseToolOptions = {
  'react-docgen-typescript'?: ParserOptions & {
    tsconfigPath?: Record<string, string>;
    compilerOptions?: Record<string, ts.CompilerOptions>;
  };
  documentation?: DocumentationArgs;
};

Смотрите ParserOptions и DocumentationArgs для доступных параметров.

Когда парсер — react-docgen-typescript, withDefaultConfig по умолчанию создает экземпляр парсера. Если настроены tsconfigPath или compilerOptions, их можно задать отдельно для каждой entry; withCompilerOptions и withCustomConfig используются для создания экземпляра парсера соответственно. Подробности смотрите в Custom Parsers.