开源技术书籍 HonKit + Mermaid 构建模板
这是一个专为软件工程、技术架构类书籍设计的本地化、轻量级静态电子书构建模板。
模板在HonKit基础上,融合了Mermaid静态预渲染、HTML5 figure语义图示规范、自动化出版前排版审校和 GitHub Pages 双端持续集成。
一、模板特性
- 零运行时 Mermaid 依赖:使用
Puppeteer和@mermaid-js/mermaid-cli在构建前将.mmd矢量源码批量转换为高清、可缩放的.svg。解决静态发布平台(GitHub Pages 等)及 PDF 导出对三方 Mermaid 插件的不兼容问题; - HTML5 语义化图示管理:提供图示规范化脚本,自动把普通 Markdown 图片语法转换为标准的
<figure>+<figcaption>,自动生成连续图号和中文图注; - 自动化排版审校(Linter):内置
audit-book.js审校器,强制验证章节元信息、导读、图号连续性、本地失效链接、代码块长度和禁用术语; - 网站级排版优化:内置
website.css,针对技术书籍的“本章导读”、“章节元信息”、“案例小结”和“实践任务”进行了视觉语义增强与移动端防溢出处理; - 发布级 SEO 自动增强:编译产物自动生成 canonical 连接、Open Graph 社交元数据、
sitemap.xml和robots.txt,对搜索引擎友好。
二、模板工程结构
online-book-template/
├── .github/
│ └── workflows/
│ └── deploy-pages.yml # GitHub Pages 自动构建发布
├── appendix/
│ └── README.md # 附录索引
├── book/
│ ├── _chapter-template.md # 规范化章节 Markdown 模板
│ └── 01-intro.md # 样章示例
├── diagrams/
│ ├── .render-manifest.json # 预渲染指纹文件(加速编译)
│ └── README.md # 图示规范
├── scripts/
│ ├── audit-book.js # 出版前排版审校器
│ ├── normalize-chapter-layout.js # 元信息结构化脚本
│ ├── normalize-figures.js # 语义化图片转换脚本
│ ├── prepare-pages.js # SEO 标签与站点地图生成脚本
│ └── render-diagrams.js # Mermaid 增量渲染脚本
├── styles/
│ └── website.css # 电子书网站版排版层叠样式表
├── book.json # HonKit 配置文件
├── package.json # 模块依赖与常用 npm 脚本
├── puppeteer-config.json # Puppeteer 沙箱逃逸配置
├── README.md # 模板介绍与使用手册
└── SUMMARY.md # 书籍导航树
三、快速开始
1. 从模板初始化
克隆或以此模板创建你的书籍仓库:
git clone https://github.com/your-username/your-book-repo.git
cd your-book-repo
2. 安装依赖
npm ci
(注意:安装依赖会下载 Puppeteer 所需的 Chromium,用于将 Mermaid 图形渲染为 SVG。)
3. 本地预览
npm run book:serve
默认启动本地热重载服务器:http://localhost:4005。
四、核心命令与开发流
1. 规范化元数据和图示
在编写完新章节或加入普通 Markdown 图片后,运行此命令将内容自动规范化为 <aside> 元数据框和 <figure> 语义图片结构:
npm run book:format
2. 预渲染 Mermaid 图形
扫描 diagrams/ 目录下的 .mmd 并自动生成同名 .svg(增量构建):
npm run diagrams:render
强制重新渲染所有图形:
npm run diagrams:render:force
3. 出版前排版审校
检查 23 个维度的格式问题(包含空链接、编号缺失等):
npm run book:audit
4. 编译静态网站
清理旧产物、重新渲染有变更的图、执行排版审校,并生成包含 SEO 标签和 sitemap 的静态页面:
npm run book:build
五、章节规范样式 (Styles)
模板内置的 styles/website.css 对以下元素进行了统一视觉定义:
- 第一标题与章名:自带底部主强调色装饰线;
- 本章导读 (Lead):带有柔和左边界色条的强调信息容器;
- 章节元信息 (Meta):栅格化布局,弱化视觉,展示对应文章及状态;
- 二级标题 (H2):左侧突出强调条;
- 语义卡片 (H2 id/class 自动挂载):
#贯穿案例...:紫色渐变,用于引导实践场景;#本章小结...:绿色渐变,用于归纳结论;#实践任务...:琥珀色渐变,用于阶段习题;
- 图示容器 (Figure):自带圆角、居中、响应式图片尺寸、多行说明文字,并在右上角带有可以直接在新窗口查看的高清 SVG 原图链接。
六、GitHub Pages 自动化部署
模板在 .github/workflows/deploy-pages.yml 配置了开箱即用的 GitHub Actions。向 main 分支推送后,将自动完成以下部署:
- 克隆代码;
- 安装依赖;
- 执行排版格式化、Mermaid 图形预渲染、全书校验;
- 构建静态站点;
- 生成 SEO sitemap 与 canonical URL;
- 自动发布到
https://<username>.github.io/<repo>/。
(在仓库设置中:Settings → Pages → Build and deployment → Source 需选定为 GitHub Actions)