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

如何无需手动改写即可将现有Markdown语法适配到Docusaurus项目?

批量转换脚本实现

针对你提到的非标准Markdown语法,可通过Python脚本批量处理所有文件,无需手动修改。以下是适配需求的转换逻辑及脚本:

转换规则

  1. 标题转换:将 hN. 标题内容 格式替换为标准Markdown标题 #...# 标题内容(N对应#的数量,如h1→#,h3→###)
  2. 移除{{toc}}:Docusaurus支持通过配置自动生成目录,直接删除该占位符
  3. 代码块转换:将 <pre><code class="lang">...</code></pre> 结构替换为标准围栏代码块 lang\n...\n
  4. 保留内容行:示例中的# ...类占位行默认保留,若为冗余注释可自行添加正则规则清理

批量转换脚本

import os
import re

def convert_markdown(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        content = f.read()
    
    # 转换标题格式
    content = re.sub(r'^h(\d+)\. (.*)$', lambda m: '#'*int(m.group(1)) + ' ' + m.group(2), content, flags=re.MULTILINE)
    
    # 移除{{toc}}占位符
    content = content.replace('{{toc}}', '')
    
    # 转换代码块结构
    def replace_code_block(match):
        lang = match.group(1)
        code_content = match.group(2).strip()
        return f'``` {lang}\n{code_content}\n```'
    content = re.sub(r'<pre>\s*<code class="([^"]+)">\s*(.*?)\s*</code>\s*</pre>', replace_code_block, content, flags=re.DOTALL)
    
    return content

def process_directory(dir_path):
    # 创建备份目录(自动跳过已存在的目录)
    backup_dir = os.path.join(dir_path, 'md_backup')
    os.makedirs(backup_dir, exist_ok=True)
    
    for filename in os.listdir(dir_path):
        if filename.endswith('.md'):
            file_path = os.path.join(dir_path, filename)
            # 备份原文件
            with open(file_path, 'rb') as src, open(os.path.join(backup_dir, filename), 'wb') as dst:
                dst.write(src.read())
            
            # 转换并覆盖原文件
            converted_content = convert_markdown(file_path)
            with open(file_path, 'w', encoding='utf-8') as f:
                f.write(converted_content)
            print(f"已处理:{filename}")

if __name__ == '__main__':
    # 替换为你的Markdown文件所在目录路径
    target_dir = './docs'
    process_directory(target_dir)

使用说明

  1. 将脚本保存为convert_docusaurus_md.py
  2. 修改脚本中target_dir为你的Markdown文件实际存放路径(如./docs)
  3. 运行脚本:python convert_docusaurus_md.py
  4. 脚本会自动将原文件备份到md_backup子目录,同时将原文件替换为转换后的标准Markdown格式

Docusaurus目录配置补充

原文件中的{{toc}}可通过Docusaurus内置功能替代:

  • 单页面启用:在页面头部的front matter中添加
    ---
    toc: true
    ---
    
  • 全局启用:在docusaurus.config.js的docs配置中添加
    module.exports = {
      presets: [
        [
          '@docusaurus/preset-classic',
          {
            docs: {
              toc: {
                enable: true,
              },
            },
          },
        ],
      ],
    };
    

内容的提问来源于stack exchange,提问作者Riccardo Ventura

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:43:15