GitBook(HonKit)进阶篇
HonKit 构建结果是一套静态网页(HTML、CSS、JS、图片),没有后端、也不连数据库。写完书之后,就是把这包文件放到托管上;要一文多发或公众号解锁,再接到 OpenWrite。
HonKit 静态网站原理
HonKit(GitBook)本质是静态文档生成工具,执行构建命令后会输出一套纯静态网页资源(HTML、CSS、JS、图片),不依赖后端服务、数据库,可直接部署在任意静态托管平台。
默认输出目录是 _book/,里面的 index.html 是入口。
GitHub Pages、Gitee Pages 常见两种源:仓库根目录,或 /docs,需要把构建结果放到它们能读到的位置。
方式一:先打到 _book,再拷走。
npx honkit build
cp -r _book/* .
这会把 HTML 铺进源码根目录,Markdown 和产物混在一起,也容易被 gitbook.com 的 Git Sync 当成文档。只适合临时预览,不要和源码长期混提交。
方式二(推荐):构建时指定输出目录。本仓库的 package.json 也是这样写的。
npx honkit build ./ ./docs
book.json 里写 "output": "./docs" 不生效(官方 CLI 3.2.3 和 HonKit 都不认这项)。输出目录只用命令行参数。
_book/、docs/ 应进 .gitignore 或单独分支,避免和 Markdown 源码搅在一起。若 Pages 要发布 docs/,再把构建结果提交上去,或用 Actions 只推产物。
GitHub Pages
GitHub 给公开仓库提供免费的静态托管,默认域名是 *.github.io。自定义域名要自己买、再按 GitHub 文档配 DNS。私有仓库开 Pages 需要付费计划。
两类站点:
- 用户主页(每个用户一个):仓库名必须是
<username>.github.io,地址https://<username>.github.io/ - 项目站(每个仓库都可以开):
https://<username>.github.io/<仓库名>/
组织账号同理,把用户名换成组织名。
Pages 只发布已经存在的静态文件。推送 Markdown 不会自动跑 honkit build。要「一推源码就更新站点」,用 GitHub Actions 在 CI 里执行 npx honkit build,再把 docs/ 或 gh-pages 交给 Pages。若本地构建后把 docs/ 提交进仓库,则 Settings → Pages 选分支,文件夹选 /docs,过几分钟即可访问。
步骤(本地构建、提交 docs/):
npx honkit build ./ ./docs- 提交并推送到 GitHub
- 仓库 Settings → Pages:分支选有
docs的那条,文件夹选docs - 等部署完成,用上面的域名打开
和 gitbook.com 的 Git Sync 不是一回事:Sync 同步源码 Markdown;Pages 托管的是 HTML。同一仓库可以源码给 Sync、docs/ 给 Pages,不要让 Sync 扫到 docs/。
Gitee Pages
Gitee 在国内访问通常比 GitHub Pages 顺。把同样的 docs/ 推进 Gitee 仓库,在仓库里开通 Pages,选分支和目录(目录里必须有 index.html)。
和 GitHub 并不完全一样:
- 账号要按 Gitee 要求完成实名等条件,以官网说明为准;
- 免费版改完文件后,往往要在 Pages 页面再点一次更新,不会像 GitHub 那样每次 push 都自动发布;自动更新是 Pages Pro 或自己用脚本调接口。
不要写「永不超时」。网络和平台策略会变,以当前能否打开为准。
OpenWrite
OpenWrite 把一篇 Markdown 发到多个技术社区,并提供「关注公众号解锁全文」。官网和渠道名单以控制台为准。
一文多发
在 OpenWrite 登录,绑定 CSDN、掘金、开源中国、思否、博客园、简书、知乎、头条等账号后,用同一篇稿分发。HonKit 这边不用改构建命令。

ReadMore 公众号解锁
静态站没有账号体系。ReadMore 在文章里截断正文,点「阅读全文」出公众号二维码;关注后按关键词回复拿到验证码,验证通过后整站解锁。插件要在已部署的线上域名上才按设计工作,本地预览经常对不上。
流程:
- 插件截断正文,只留预览
- 点阅读全文 → 关注公众号
- 回复关键词拿到验证码
- 输入验证码后整站解锁
接到 HonKit
OpenWrite 给 GitBook 用过两个包,配置项相同:openwrite(本篇沿用原文)和 readmore(插件篇)。HonKit 下用 npm 安装,没有 gitbook install。
{
"plugins": ["openwrite"],
"pluginsConfig": {
"openwrite": {
"blogId": "你的 OpenWrite 博客 ID",
"name": "公众号名称",
"qrcode": "公众号二维码图片地址",
"keyword": "解锁关键词"
}
}
}
npm install gitbook-plugin-openwrite --save-dev
npx honkit serve --reload
npx honkit build ./ ./docs
blogId、二维码、关键词以 OpenWrite 后台为准。
总结
- 输出目录用
npx honkit build ./ ./docs,不要指望book.json的output - 源码和 HTML 分开;Pages 只发布构建结果
- 国内读者多可以再镜像一份到 Gitee Pages,免费版记得手动点更新
- 一文多发、公众号解锁用 OpenWrite;插件只影响静态页,和 Pages 托管无关