SuperAPI AI 工具集

docusaurus-generator

写作与研究

查看项目

更新于 10-16 06:04

技能介绍

用途

Docusaurus Generator 是一个技能,用于通过分析当前项目,使用 Docusaurus 3.x 生成终端用户文档。当用户要求创建文档、生成文档等时,可以使用此技能。

主要能力

该技能的工作流程包括:

  1. 分析项目结构,以了解需要记录的内容。
  2. 初始化一个新的 Docusaurus 3.x 项目(或使用现有项目)。
  3. 根据项目分析生成文档内容。
  4. 配置 Docusaurus 设置和主题。
  5. 构建并预览文档站点。

步骤 1:分析项目

在生成文档之前,分析项目以识别:

  • 包结构:检查 package.json、monorepo 设置
  • 现有文档:查找 docs/、README.md、JSDoc 注释
  • 功能:从路由、组件、API 中识别主要功能
  • 配置:检查揭示功能的配置文件

关键文件检查命令:

find . -name "README.md" -o -name "*.md" | head -20
ls -la docs/ 2>/dev/null
cat package.json | jq '.name, .description'

步骤 2:初始化 Docusaurus

在 docs-site/ 目录中创建一个新的 Docusaurus 3.x 项目:

npx -y create-docusaurus@latest docs-site classic --typescript

或者如果文档已存在,则跳到配置步骤。

步骤 3:生成文档内容

文档结构建议如下:

docs-site/docs/
├── intro.md                    # 入门指南
├── installation.md             # 安装指南
├── features/
│   ├── feature-1.md
│   └── feature-2.md
├── guides/
│   ├── quick-start.md
│   └── advanced-usage.md
├── configuration/
│   └── settings.md
└── faq.md

每个文档应包含正确的 frontmatter:

---
sidebar_position: 1
title: Page Title
description: Brief description for SEO
---

# Page Title

Content here...

内容指南:

  • 面向终端用户,而非开发者
  • 使用简单清晰的语言
  • 为 UI 功能包含截图
  • 在相关处添加代码示例
  • 在相关文档之间建立链接

步骤 4:配置 Docusaurus

docusaurus.config.ts 关键配置选项示例:

import {themes as prismThemes} from 'prism-react-renderer';
import type {Config} from '@docusaurus/types';

const config: Config = {
  title: 'Project Name',
  tagline: 'Your tagline here',
  favicon: 'img/favicon.ico',
  url: 'https://your-docs-url.com',
  baseUrl: '/',
  
  // Localization
  i18n: {
    defaultLocale: 'en',
    locales: ['en', 'vi'],
  },
  
  themeConfig: {
    navbar: {
      title: 'Project Name',
      logo: {
        alt: 'Logo',
        src: 'img/logo.svg',
      },
      items: [
        {
          type: 'docSidebar',
          sidebarId: 'tutorialSidebar',
          position: 'left',
          label: 'Docs',
        },
      ],
    },
    footer: {
      style: 'dark',
      copyright: `Copyright © ${new Date().getFullYear()}`,
    },
    prism: {
      theme: prismThemes.github,
      darkTheme: prismThemes.dracula,
    },
  },
};

export default config;

主题自定义:编辑 src/css/custom.css 进行品牌化:

:root {
  --ifm-color-primary: #2e8555;
  --ifm-color-primary-dark: #29784c;
  --ifm-color-primary-darker: #277148;
  --ifm-color-primary-darkest: #205d3b;
  --ifm-color-primary-light: #33925d;
  --ifm-color-primary-lighter: #359962;
  --ifm-color-primary-lightest: #3cad6e;
  --ifm-code-font-size: 95%;
}

[data-theme='dark'] {
  --ifm-color-primary: #25c2a0;
}

步骤 5:构建与预览

cd docs-site

# Install dependencies
npm install

# Start dev server
npm run start

# Build for production
npm run build

# Serve production build locally
npm run serve

常用插件

搜索(Algolia 或本地)

不使用 Algolia 的本地搜索:

npm install @easyops-cn/docusaurus-search-local
// docusaurus.config.ts
themes: [
  [
    '@easyops-cn/docusaurus-search-local',
    {
      hashed: true,
      language: ['en', 'vi'],
    },
  ],
],

博客

经典模板中已包含。在 docusaurus.config.ts 中配置:

blog: {
  showReadingTime: true,
  blogSidebarCount: 'ALL',
},

版本控制

npm run docusaurus docs:version 1.0.0

多语言支持

启用 i18n:

  1. 在 docusaurus.config.ts 中配置 locales
  2. 在 i18n/vi/docusaurus-plugin-content-docs/current/ 中创建翻译文档
  3. 将语言切换器添加到导航栏
navbar: {
  items: [
    {
      type: 'localeDropdown',
      position: 'right',
    },
  ],
},

翻译工作流:

# Generate translation files
npm run write-translations -- --locale vi

# Start dev server with locale
npm run start -- --locale vi

最佳实践

  • 保持 intro 简短——用户希望快速开始
  • 使用 admonitions 提示、警告:
:::tip
Pro tip here
:::

:::warning
Be careful about this
:::
  • 将图片添加到 static/img/ 并引用为 /img/filename.png
  • 使用 tabs 处理平台特定内容:
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs>
  <TabItem value="npm" label="npm">npm install</TabItem>
  <TabItem value="yarn" label="Yarn">yarn add</TabItem>
</Tabs>
  • 使用 sidebars.ts 从文件夹结构自动生成侧边栏

适用场景

  • 需要为当前项目生成终端用户文档站点
  • 用户要求创建文档、生成文档
  • 希望使用 Docusaurus 3.x 快速搭建文档站点

限制

资料中未明确说明该技能的具体限制、收费、价格、平台或效果。