主要观点:TigerBeetle 重新从头构建文档站点,应用 TigerStyle 和第一性原理思维,追求最快阅读体验且不依赖 Docusaurus。
关键信息:
- 最初用 Docusaurus 构建文档站,虽起步快但有违零依赖原则、复杂、引入额外代码、搜索不佳等问题。
- 决定创建更简单、清晰、快速的浏览阅读体验,探索基于 Zig 的静态网站生成器 Zine,因与 GFM 不兼容而放弃。
- 利用 Zig 的 build.zig 实现静态网站生成,依赖 Pandoc 进行 Markdown 解析和转换,通过 lazyDependency 处理系统依赖,确保可重复性和安全性。
- 构建文档站时避免管理资源,利用 build 的局部竞技场,文档站采用纯 HTML 和 CSS,添加键盘快捷键、预加载缓存等增强功能,减少部署命令和提高 CI 稳定性,采用 Content Security Policy 防止 XSS,文档站静态构建输出相比 Docusaurus 减少约 10 倍,还添加了网络错误游戏作为特别之处。
重要细节: - Docusaurus 基于 NodeJS 增加大量依赖,其添加的额外文件在 GitHub 可见,搜索体验不佳。
- Zig 可直接处理系统依赖,如 Pandoc 的 GitHub 发布包含预构建二进制文件,通过哈希确保内容一致性。
- 构建过程中通过 git 获取 Markdown 文件列表,创建 Markdown 到 HTML 的转换任务,利用 build 系统的缓存机制。
- 文档站即使禁用 JavaScript 也可用,通过 Service Worker 预加载缓存文档页面,优化代码可读性和性能。
- 部署简化为单个 zig build 命令,减少 CI 波动,通过 404 错误可访问网络错误游戏。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。