Skip to content

目前可用脚本

python
import os
import json
import re

def generate_sidebar(dir_path):
    sidebar_items = []
    for item in os.listdir(dir_path):
        item_path = os.path.join(dir_path, item)
        if os.path.isdir(item_path):
            sub_items = generate_sidebar(item_path)
            if sub_items:
                sidebar_item = {
                    "text": item,
                    "collapsed": True,
                    "items": sub_items
                }
                sidebar_items.append(sidebar_item)
        else:
            file_name, file_extension = os.path.splitext(item)
            if file_extension == ".md":
                link = os.path.join(dir_path, file_name)
                sidebar_item = {
                    "text": file_name,
                    "link": link+".md"
                }
                sidebar_items.append(sidebar_item)
    return sidebar_items

root_dir = "documents"
devPath = ".vitepress/config.mjs"
sidebar = generate_sidebar(root_dir)

# 序列化JSON数据
sidebar_json = json.dumps(sidebar, ensure_ascii=False, indent=2)

# # 使用正则表达式删除sidebar树组 【yes】
# config_content = re.sub(r'sidebar: (\[.*\]),\n', "", config_content, flags=re.DOTALL)

# # 使用正则表达式增加sidebar树组
# config_content = re.sub(r"(socialLinks:\s*\[)", f"sidebar: {sidebar_json},\n  \\1", config_content)

# # 写入修改后的config.mjs文件
with open("data.json", "w", encoding="utf-8") as config_file:
    config_file.write(sidebar_json)

之前copy版本

python
import os
import json
import re

def generate_sidebar(dir_path):
    sidebar_items = []
    for item in os.listdir(dir_path):
        item_path = os.path.join(dir_path, item)
        if os.path.isdir(item_path):
            sub_items = generate_sidebar(item_path)
            if sub_items:
                sidebar_item = {
                    "text": item,
                    "collapsed": True,
                    "items": sub_items
                }
                sidebar_items.append(sidebar_item)
        else:
            file_name, file_extension = os.path.splitext(item)
            if file_extension == ".md":
                link = os.path.join(dir_path, file_name)
                sidebar_item = {
                    "text": file_name,
                    "link": link
                }
                sidebar_items.append(sidebar_item)
    return sidebar_items

root_dir = "documents"
sidebar = generate_sidebar(root_dir)

# 读取config.mjs文件
with open("config.mjs", "r", encoding="utf-8") as config_file:
    config_content = config_file.read()

# 使用正则表达式替换sidebar树组
sidebar_json = json.dumps(sidebar, ensure_ascii=False, indent=2)
config_content = re.sub(r"sidebar:\s*\[.*?\]", f"sidebar: {sidebar_json}", config_content, flags=re.DOTALL)
print(sidebar_json)
# 写入修改后的config.mjs文件
# with open("config.mjs", "w", encoding="utf-8") as config_file:
    # config_file.write(config_content)

# print("Sidebar generated and replaced in config.mjs")