Skip to content

更换在线文档的心酸史

网页地址:https://hankin2015.github.io/Machine_to_DeepingLearning/

使用gitbook+github pages+github actions进行搭建。

最终发现使用docker环境能正常部署,但是会自动创建gh-pages分支发布html文件。

just the docs:https://hankin2015.github.io/just-the-docs/ read the docs:https://ml-booknote.readthedocs.io/zh-cn/latest/index.html 最终选择参考https://alibaba.github.io/async_simple/docs.en/GetStarted.html 使用vitepress技术搭建。

https://blog.csdn.net/gitblog_00608/article/details/141522735 心累,花了两天使用just the docs去搭建在线文档,结果始终解决不了导航栏菜单。它默认只能通过在Markdown 文件添加 Front Matter(即 --- 包裹的 layout、title、nav_order 等配置)自动生成,官网也没有说明可以通过nav字段生成,但是豆包始终坚持是支持的。 更换其他AI工具:kimi 发现询问也是说支持,也给出了一些修改建议,但多次测试依然无结果。最终我质疑它,然后它就服软了。。。。。。

感觉你说是错误的吧,根本不支持nav字段自定义导航栏菜单列表

你提出的质疑是合理的。经过再次验证和搜索结果确认,Just the Docs 主题目前并不支持通过 nav 字段在 _config.yml 中自定义顶部导航栏菜单列表。
事实澄清:
Just the Docs 的导航栏(顶部菜单)是自动生成的,它基于页面 title 和 parent、grand_parent 等 front-matter 自动构建,而不是通过 nav 字段手动定义。
_config.yml 中的 nav 字段 并不是 Just the Docs 的主题配置项,即使你写了 nav,它也不会被识别或生效。你观察到的“自动搜索 markdown 文件生成导航”的行为,正是该主题的默认逻辑。
你可能是受到了 其他 Jekyll 主题(如 Minima、GitBook 等)或文档生成工具(如 MkDocs、VuePress) 的误导,它们才支持通过 nav 字段配置导航栏。

然后再去质疑豆包:

我已经多次验证和搜索结果确认,Just the Docs 主题目前并不支持通过 nav 字段在 _config.yml 中自定义顶部导航栏菜单列表。

你的结论是正确的!经过更细致的验证和官方文档确认,Just the Docs 主题确实不支持通过 _config.yml 中的 nav 字段直接定义顶部导航栏。之前的混淆主要源于对 Jekyll 主题通用配置的惯性认知,而该主题有其独特的导航设计逻辑。
核心原因:Just the Docs 的导航配置采用独立文件机制
该主题将导航配置与 _config.yml 分离,统一通过 _data/navigation.yml 文件管理所有导航(包括顶部导航和侧边栏),而非依赖 _config.yml 中的 nav 字段。这是其设计上的特殊性,也是与其他 Jekyll 主题(如 minimal-mistakes)的关键区别。

浪费了我的青春啊!!!

collapsed: true是折叠

2、目录

  • ACM

方案操作方法

使用 GitBook 结合 GitHub Pages 时,确实可以不需要手动上传编译后的 HTML 文件,通过 GitHub Actions 自动化流程可以实现这一目标。

1、核心思路

利用 GitHub Actions 实现「推送源码后自动编译 GitBook 并部署到 GitHub Pages」,全程无需手动处理编译产物(HTML 文件),只需维护 Markdown 源码即可。

2、准备 GitBook 源码

在 GitHub 仓库中存放 GitBook 源文件(book.json、SUMMARY.md、Markdown 文档等),无需包含 _book 目录(编译产物),建议在 .gitignore 中添加:

docs/_book/
docs/node_modules/

由于该项目还有其他文件需要上传,并不是单一的文档书籍,因此需要添加docs文件夹。此方式参考https://github.com/alibaba/async_simple/blob/main/.github/workflows/static.yml

3、配置 GitHub Actions 工作流

在仓库中创建自动化部署的工作流配置文件:

仓库根目录新建文件夹 .github/workflows/ 在该文件夹下创建 deploy.yml 文件,内容如下:

name: GitBook Deploy

on:
  push:
    branches: [ master ]  # 监听 master 分支的推送

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v3
        with:
          fetch-depth: 0

      - name: 安装 Node.js
        uses: actions/setup-node@v3
        with:
          node-version: 16  # GitBook 对 Node 版本有要求,建议 14+

      - name: 安装 GitBook 工具
        run: |
          npm install -g gitbook-cli
          gitbook install  # 安装 book.json 中配置的插件

      - name: 编译 GitBook
        run: 
            cd docs
            gitbook build  # 生成 _book 目录(编译后的 HTML)

      - name: 部署到 GitHub Pages
        uses: peaceiris/actions-gh-pages@v3
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./docs/_book  # 指定编译产物目录

4、配置 GitHub Pages 源

  • 进入 GitHub 仓库 → Settings → Pages
  • 在「Source」中选择:GitHub Actions(然后你就会发现github会提供默认的两种配置yml文件)
  • 保存配置后,GitHub Pages 会自动创建并读取编译后的 HTML 文件。

5、部署报错

Run `npm audit` for details.
Installing GitBook 3.2.3
/opt/hostedtoolcache/node/16.20.2/x64/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287
      if (cb) cb.apply(this, arguments)
                 ^

TypeError: cb.apply is not a function
    at /opt/hostedtoolcache/node/16.20.2/x64/lib/node_modules/gitbook-cli/node_modules/npm/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqCallback.oncomplete (node:fs:203:5)
Error: Process completed with exit code 1.

这个错误通常是由于 GitBook 与高版本 Node.js 不兼容 导致的。GitBook 官方已停止维护,其依赖的 graceful-fs 等库与 Node.js 14+ 版本存在兼容性问题,具体表现为回调函数处理异常。

GitBook 对 Node.js 版本较为敏感,推荐使用 Node.js 12.x(经测试兼容性最佳)。同时需要手动处理依赖冲突。修改了多个版本解决方法,经测试,未解决。

替代方案(推荐):使用社区维护版本 由于 GitBook 官方已停止维护,长期来看建议迁移到社区维护的分支(如 gitbook-legacy)或替代工具(如 mdBook、VitePress)。

This website is released under the MIT License.