You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docusaurus的docs目录中管理多课程的不同版本?

Docusaurus多课程独立版本管理方案

针对你的需求,最清晰且可维护的实现方式是为每门课程配置独立的文档插件实例,让每个课程拥有专属的版本管理体系,互不干扰。以下是具体实现步骤:

1. 调整目录结构

按课程划分文档根目录,每个课程下再按版本存放文档:

docs/
├── course-a/
│   ├── current/          # Course A 当前版本(比如v2.0)的所有文档
│   └── v1.0/             # Course A 旧版本文档
├── course-b/
│   └── current/          # Course B 当前版本(比如v1.5)的所有文档
└── course-c/
    ├── current/          # Course C 当前版本(比如v3.0)的所有文档
    └── v2.1/             # Course C 旧版本文档

2. 修改docusaurus.config.js配置

移除原presets中的docs配置,改用多插件实例的方式,每门课程对应一个@docusaurus/plugin-content-docs插件:

module.exports = {
  presets: ['@docusaurus/preset-classic'],
  plugins: [
    // 课程A的文档插件
    [
      '@docusaurus/plugin-content-docs',
      {
        id: 'course-a',
        docsPath: 'docs/course-a',
        routeBasePath: 'course-a',
        lastVersion: 'current',
        versions: {
          current: {
            label: 'Course A v2.0',
            path: 'v2.0',
          },
          'v1.0': {
            label: 'Course A v1.0',
            path: 'v1.0',
          },
        },
      },
    ],
    // 课程B的文档插件
    [
      '@docusaurus/plugin-content-docs',
      {
        id: 'course-b',
        docsPath: 'docs/course-b',
        routeBasePath: 'course-b',
        lastVersion: 'current',
        versions: {
          current: {
            label: 'Course B v1.5',
            path: 'v1.5',
          },
        },
      },
    ],
    // 课程C的文档插件
    [
      '@docusaurus/plugin-content-docs',
      {
        id: 'course-c',
        docsPath: 'docs/course-c',
        routeBasePath: 'course-c',
        lastVersion: 'current',
        versions: {
          current: {
            label: 'Course C v3.0',
            path: 'v3.0',
          },
          'v2.1': {
            label: 'Course C v2.1',
            path: 'v2.1',
          },
        },
      },
    ],
  ],
  // 配置导航栏入口,关联各课程文档
  themeConfig: {
    navbar: {
      items: [
        {
          type: 'docSidebar',
          sidebarId: 'course-aSidebar',
          position: 'left',
          label: 'Course A',
          docsPluginId: 'course-a',
        },
        {
          type: 'docSidebar',
          sidebarId: 'course-bSidebar',
          position: 'left',
          label: 'Course B',
          docsPluginId: 'course-b',
        },
        {
          type: 'docSidebar',
          sidebarId: 'course-cSidebar',
          position: 'left',
          label: 'Course C',
          docsPluginId: 'course-c',
        },
      ],
    },
  },
};

3. 配置各课程的侧边栏

在sidebars.js中为每门课程创建独立的侧边栏配置:

module.exports = {
  course-aSidebar: [
    {
      type: 'category',
      label: 'Course A 核心内容',
      items: [/* 填入Course A的文档路径 */],
    },
  ],
  course-bSidebar: [
    {
      type: 'category',
      label: 'Course B 核心内容',
      items: [/* 填入Course B的文档路径 */],
    },
  ],
  course-cSidebar: [
    {
      type: 'category',
      label: 'Course C 核心内容',
      items: [/* 填入Course C的文档路径 */],
    },
  ],
};

方案优势

  • 每个课程的版本管理完全独立,新增/删除版本不会影响其他课程
  • 路由结构清晰,用户可通过/course-a/v2.0、/course-c/v2.1等路径直接访问对应版本的课程文档
  • 维护成本低,各课程文档物理隔离,避免版本混淆

内容的提问来源于stack exchange,提问作者Patrick Collins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:46:04