Docsify侧边栏多级子目录生成

本文介绍如何使用Docsify构建网站时自动生成sidebar,并详细列举了子目录结构,包括Java、设计模式、大数据技术栈(如Presto、Spark和Alluxio)及其相关文档。同时,文章提到了各种插件和配置,如代码高亮和导航功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动生成 docsify 的 sidebar 和 每个子目录中的 sidebar

Docsify 官网

网站的部署

  • Github Page: 国内访问太慢了.

子目录

- [Java](java/)
- [设计模式](设计模式/)
- [大数据](大数据/)
  - [presto](大数据/presto/)
    - [代码阅读](大数据/presto/代码阅读/)
      - [服务发现](大数据/presto/代码阅读/discovery.md)
  - [spark](大数据/spark/)
  - [alluxio](大数据/alluxio/)

界面效果

在这里插入图片描述

docsify index.html 模版

<!-- index.html -->

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <meta charset="UTF-8" />
    <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/themes/vue.css" />

    <!-- 文件夹样式 -->
    <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/sidebar-folder.min.css" />
    <!-- 箭头样式 -->
    <!-- <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/sidebar.min.css" /> -->
  </head>
  <body>
    <div id="app"></div>
    <script>  
      window.$docsify = {
        name: "Blog",
        // 侧边栏文档目录
        loadSidebar: true,

        subMaxLevel: 2,
        alias: {
          "/.*/_sidebar.md": "/_sidebar.md",
        },
        // 跳转后自动到顶部
        auto2top: true,

        coverpage: true,
        // PLUGINS
        // ----------------------------------------------------------------
        // 页面右侧toc
        toc: {
          tocMaxLevel: 2,
          target: "h2, h3, h4, h5, h6",
        },

        // 全文搜索
        search: {
          depth: 6,
          noData: "没有搜到!",
          placeholder: "搜索...",
          // 避免搜索索引冲突,同一域下的多个网站之间
          namespace: "website-1",
        },
        // 底部导航
        pagination: {
          previousText: "上一页",
          nextText: "下一页",
          crossChapter: true,
          crossChapterText: true,
        },
        // 字数统计
        count: {
          countable: true,
          position: "top",
          margin: "10px",
          float: "right",
          fontsize: "0.9em",
          color: "red",
          language: "chinese",
          localization: {
            words: "",
            minute: "",
          },
          isExpected: true,
        },
      };
    </script>
    <!-- docsify -->
    <script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/docsify.min.js"></script>  

    <!-- 代码高亮  https://cdn.jsdelivr.net/npm/prismjs@1/components/ -->
	
    <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>	
    <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-python.min.js"></script>
    <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-cmake.min.js"></script>
    <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-java.min.js"></script>
    <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-csharp.min.js"></script>     
    <script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-docker.min.js"></script>  
	<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-powershell.min.js"></script>  


    <!-- 多tab支持 -->
    <script src="https://cdn.jsdelivr.net/npm/docsify-tabs@1/dist/docsify-tabs.min.js"></script>

    <!-- 代码复制 -->
    <script src="https://cdn.jsdelivr.net/npm/docsify-copy-code@2/dist/docsify-copy-code.min.js"></script>

    <!-- 底部 上一页下一页 -->
    <script src="https://cdn.jsdelivr.net/npm/docsify-pagination@2/dist/docsify-pagination.min.js"></script>

    <script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/external-script.min.js"></script>

    <script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/ga.min.js"></script>

    <!-- 全文搜索 -->
    <script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/search.js"></script>

    <!-- 图片放大缩小 -->
    <script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/zoom-image.min.js"></script>

    <!-- 字数统计 -->
    <script src="https://cdn.jsdelivr.net/npm/docsify-count@latest/dist/countable.min.js"></script>

    <!-- 侧边栏目录折叠 -->
    <script src="https://cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/docsify-sidebar-collapse.min.js"></script>

    <!-- 页面右侧 TOC -->
    <script src="https://cdn.jsdelivr.net/npm/docsify-plugin-toc@1.1.0/dist/docsify-plugin-toc.min.js"></script>

      <!-- emoji -->
      <script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script>
  </body>
</html>

<think>嗯,用户想自动生成Markdown文件夹结构索引或者找到相关工具。我需要先理解他的需求。他可能有一个包含多个Markdown文件的文件夹,想要生成一个结构化的索引,方便导航或文档管理。 首先,我应该回忆一下之前学过的相关工具和方法。比如,之前提到的Docsify可以自动生成侧边栏目录,这可能有用。还有Python脚本的方法,像引用[1]里的代码,可以转换Markdown并生成索引。另外,命令行工具如markdown-toc可以生成目录,但可能仅限于单个文件,而用户需要的是整个文件夹的结构。 然后,用户可能需要不同的实现方式,比如命令行工具、静态站点生成器、Python脚本,或者编辑器插件。比如Typora可以自动生成目录,但可能只是针对单个文件。而Docsify或VuePress更适合整个站点的导航。 还要考虑用户的技术水平,是否需要简单易用的工具,或者允许自定义的脚本。比如Python脚本适合自动化处理,但需要用户有Python环境。命令行工具可能需要安装Node.js的包,比如markdown-folder-to-json或者tree-cli。 另外,用户提到的“文件夹索引”可能包括子目录的结构,所以需要递归遍历文件夹。例如,使用tree命令生成树状结构,再转换为Markdown格式。或者用Node.js写个脚本,读取目录结构并生成列表。 可能还要提到不同的工具优缺点,比如Docsify适合文档网站,Python脚本更灵活,命令行工具快速生成。需要分点说明每种方法的步骤,并给出示例,方便用户选择。 最后,确保推荐的工具或方法有引用来源,比如引用[1]、[3]、[4]、[5]中的相关内容。同时,生成相关问题,帮助用户深入探索,比如如何排除特定文件,如何美化索引样式等。</think>### 如何自动生成 Markdown 文件夹结构索引 #### 方法1:使用命令行工具生成目录树 1. **通过 `tree` 命令生成目录结构** 在终端中安装并运行 `tree` 命令,生成文件夹树形结构,再将其粘贴到 Markdown 文件中。例如: ```bash tree -L 2 -I 'node_modules|.git' --dirsfirst > DIRECTORY.md ``` - `-L 2` 表示显示两层目录 - `-I` 用于排除特定文件夹 - 输出结果可直接保存为 Markdown 文件[^3][^5]。 2. **使用 `markdown-toc` 工具** 安装 Node.js 包 `markdown-toc`,在 Markdown 文件中添加占位符 `<!-- toc -->`,运行命令自动生成目录: ```bash npx markdown-toc -i README.md ``` 此工具支持单文件目录生成,适用于文档内部导航[^2]。 --- #### 方法2:静态站点生成器集成 1. **Docsify 自动生成侧边栏** 搭建 Docsify 文档站点后,通过配置 `_sidebar.md` 和 `index.html` 自动渲染文件夹结构: ```html <!-- index.html --> <script> window.$docsify = { loadSidebar: true, subMaxLevel: 3 } </script> ``` 文件结构会自动映射为网页侧边栏导航[^3]。 2. **VuePress 或 MkDocs** 类似工具可通过配置文件(如 `config.yml`)自动生成多级目录索引,适合复杂文档项目。 --- #### 方法3:Python 脚本自动化 1. **递归遍历文件夹并生成索引** 编写 Python 脚本,使用 `os.walk` 遍历目录,生成带超链接的 Markdown 索引: ```python import os def generate_index(path, output_file="INDEX.md"): with open(output_file, "w", encoding="utf-8") as f: for root, dirs, files in os.walk(path): level = root.replace(path, "").count(os.sep) indent = " " * level f.write(f"{indent}- **{os.path.basename(root)}**\n") for file in files: if file.endswith(".md"): f.write(f"{indent} - [{file}]({os.path.join(root, file)})\n") ``` 运行脚本后生成结构化索引文件[^1][^4]。 --- #### 方法4:编辑器插件 - **Typora 自动目录** 在 Typora 中输入 `[TOC]` 即可自动生成当前文件的目录,但需手动聚合多文件索引。 - **VS Code 插件(如 Markdown All in One)** 支持快捷键生成单文件目录,结合自定义脚本可扩展为多文件索引。 --- ### 工具对比 | 方法 | 适用场景 | 自动化程度 | 自定义灵活性 | |--------------|---------------------------|------------|--------------| | 命令行工具 | 快速生成简单目录树 | 高 | 中 | | 静态站点生成器| 文档网站建设 | 高 | 高 | | Python 脚本 | 复杂结构或定制需求 | 中 | 高 | | 编辑器插件 | 单文件或轻量级需求 | 低 | 低 | ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值