跳转到主要内容

OINK 1.0 · 本地优先 · 仅依赖 Hugo

PGSTY OINK

Markdown 输入,现代文档输出。
知识发布框架

价值主张

工程文档所需的能力,开箱即用

工程文档所需的一切——内置、本地、按需加载。

01 / 工程文档

为工程师与文档站设计

◇ 从第一次构建到长期维护都没有额外阻力

内容团队可以把时间用在文档上,而不是重复搭建站点基础设施。

02 / 设计与能力

简洁、素雅、功能齐全

◇ 现代文档视觉与成熟内容能力兼得

界面保持克制,成熟文档站所需的功能一项不少。

不止文档

六种内容形态,同一套外壳

文档站很少只有文档。那些通常需要第二个工具的内容形态,在这里共用同一套外壳、检索与输出。

阅读外壳

文档

侧栏树、页内目录、面包屑、翻页、编辑与历史链接——其它内容类型复用的就是这套外壳。

阅读指南

更新

博客与 RSS

按时间排列的文章、按数量排序的标签面板,以及按语言分别生成的订阅源。

阅读指南

长篇

书籍

章节编号,图表公式用 {#id num=} 编号、xref 交叉引用,整本可打印。

阅读指南

发布

发布与下载

一份 data/download/*.yaml 生成发布卡片、资产表与校验和,发布状态是数据。

阅读指南

展示

Landing 页

用二十二种服务端渲染分区拼装页面,你正在读的这一页就是其中之一。

阅读指南

OpenAPI

API 参考

Swagger UI 与 Redoc 都是本地运行时,规范文件放在仓库里,离线可用。

阅读指南

组件参考

二十一个组件,按需加载

每个组件都有独立的一页,并在 HTML、打印、Markdown 与 RSS 下有确定形态;交互运行时只随用到它的页面下发。

PlantUML

UML,需自建渲染服务

PlantUML

画廊

gallery 数据围栏

画廊

代码块

Chroma · 行号 · 复制 · 折叠

代码块

图片

图注 · 尺寸 · 缩放

图片

表格

标题 · 编号 · 矩阵

表格

徽章

行内状态,五种 tone

徽章

引用

引入文件、参数与构建注释

引用

选型之前

值得先问的几个问题

哪里需要 Node.js、npm 或打包器吗?

不需要。构建依赖只有 Hugo Extended(0.160.1 或更新)。Go 只用一次,用来把主题解析为 Hugo Module;离线归档或 Git submodule 方式连 Go 也不需要。界面交互仍在浏览器里执行 JavaScript,但这些脚本随主题分发,只挂在用到它们的页面上。

我有一个 Docsy 站,迁移有多难?

内容与 front matter 大多可以直接沿用,替换的是外壳、导航、检索与组件。改名的配置键会让 构建失败并给出新名字,bin/migrations/oink06.py 在改写之前先报告它会改什么。 见升级与迁移

OINK 只适合大型文档树吗?

不是。样例站点里既有两页的项目站,也有一千五百个文件的发行版手册, 还有一个只用 OINK 做落地页的公司站。外壳向下缩放和向上扩展一样自然。

中文与其它非拉丁文字的内容怎么处理?

本地检索对拉丁文字用 Lunr、对中日韩文本用子串回退,无需托管服务也能搜索。英语、简体中文 (zh-cnzh)与繁体中文(zh-tw)的界面文案经过人工审校,另外 28 种语言共用同一套 key。支持 RTL 布局。

AI 助手与爬虫拿到的是什么?

outputs 里加上 markdown,每个页面就有一份 index.md,由 rel="alternate" 指过去; LLMS 输出格式在站点根目录写出 llms.txt。「在 ChatGPT / Claude 中打开」这类页面动作 存在,但默认关闭,因为它会把读者的 URL 交给第三方。

许可证是什么?和 Docsy 是什么关系?

Apache License 2.0。OINK 是 Docsy 的分叉并独立演化;Docsy 的源码历史、署名与 Apache-2.0 义务完整保留,每个随主题分发的运行时都在 VENDOR.json 里连同许可证列出。 见开源许可与致谢

从一个已经能运行的仓库开始。使用 OINK Starter,替换身份与内容,再通过 warning 即失败的 Hugo 构建发布。