Docusaurus vs Htmlpress
Docusaurus 是由 Meta 维护的开源文档框架。它通过基于 Webpack 的构建流水线渲染 React + MDX 内容,提供一流的版本管理和国际化支持,并拥有庞大的插件生态。
概览
| 维度 | Htmlpress | Docusaurus |
|---|---|---|
| 语言 / 运行时 | Rust(单一二进制,无运行时) | TypeScript / Node 18+ |
| UI 框架 | 无(纯 HTML + CSS,htmlpress-* Web 组件) |
React 18 |
| 构建工具 | htmlpress 二进制文件 | Webpack |
| 内容格式 | HTML 和 Markdown 页面 | Markdown + MDX |
| 许可证 | MIT,自托管 | MIT,自托管 |
| 输出模型 | 预渲染静态 | 预渲染静态 |
架构
htmlpress 是一个 Rust 二进制文件,可从 npm(gethtmlpress)、PyPI 或
crates.io 安装。它把每个 HTML 页面包裹进同一个带导航和主题的布局中;没有打包器、没有
UI 框架,也没有插件 API。每个内置文件——布局、样式、脚本和每个组件——都可以被弹出:在
.htmlpress/ 下相同路径放置一个文件即可替换它。
Docusaurus 基于 Webpack 构建。其运行时由 React Router 加上负责主题、插件和内容源的 Docusaurus 核心组成。插件是一等公民——每个内置功能(文档、博客、页面、搜索)本身都是插件,第三方也以同样的方式扩展系统。
在 htmlpress 一侧,内容布局不受约束:它按 glob 扫描(htmlpress.yaml
中的 include/exclude,默认是所有 .html
文件),页面的 URL 跟随其在 glob 基础路径之下的文件路径,因此
docs/**/*.html 会把 docs/guide.html 提供在
/guide/。不要求存在 docs/ 文件夹。导航由文件夹和每个页面的
<meta name="order"> 构建;文件夹的
index.html 为其分组命名。Docusaurus 的 docs 插件需要一个
docs/ 目录(可通过 path 配置,但基于文件夹而非 glob)。
内容形式
Docusaurus 接受带 frontmatter 的 Markdown 和 MDX,并允许在
.md/.mdx 文件中嵌入 React 组件。htmlpress 接受
.html 页面(完整文档或裸片段)和带 frontmatter 的
.md 页面,其 :::name 指令就是它的组件;不支持 MDX,也没有
React。
htmlpress 页面是纯语义化 HTML,主题直接根据元素本身设置样式。更丰富的区块是
htmlpress-*
自定义元素(htmlpress-callout、htmlpress-tabs、
htmlpress-filetree、htmlpress-cards……),其 CSS 和 JS
只在使用该标签的页面上链接。项目可以通过
.htmlpress/components/<name>/<name>.html
添加自己的标签,它会在构建时替换该标签。Docusaurus 使用 MDX 组件以及
admonition 扩展来实现提示框。
htmlpress 没有 frontmatter:页面的元数据就是它自己的
<head>——<title>、
<meta name="description">、
<meta name="order">、<meta name="layout"> 和
<meta name="image">;其他
<head> 标签会被保留。Docusaurus 使用
id、slug、
sidebar_position、sidebar_label、tags。
功能矩阵
| 能力 | Htmlpress | Docusaurus |
|---|---|---|
| 版本管理 | 部分支持(每个版本一个分区或一次部署) | 是(内置) |
| 国际化(i18n) | 是(翻译、语言选择器、内置 7 种界面语言) | 是(内置) |
| 搜索 | 是(内置,客户端) | Algolia DocSearch 集成 |
| 博客 | 否 | 是(内置插件) |
| 更新日志 | 否 | 否(社区插件) |
| Sitemap | 是(设置 site 时) |
是 |
| RSS | 否 | 是(用于博客插件) |
| 主题 | .htmlpress/ 中的弹出文件 + --htmlpress-* 令牌 |
主题包(@docusaurus/theme-*) |
| 插件 | 否(.htmlpress/components/ 中的项目组件) |
一流的插件 API |
| 自定义路由 |
任意 .html 文件;.htmlpress/layouts/ 中的额外布局
|
由插件定义的路由 |
输出与部署
htmlpress 把每个页面写为 .htmlpress/build/ 中的静态 HTML,同时写出
robots.txt、设置了 site 时的
sitemap.xml、每个页面的 Markdown 副本、llms.txt,以及位于
.well-known/agent-skills/ 下的智能体技能。base
键让站点在子路径下提供服务。托管平台指南见 部署。
Docusaurus 同样预渲染为静态 HTML,输出到
build/。其静态输出可以运行在同样的托管平台上(GitHub
Pages、Cloudflare、Vercel、Netlify、静态托管)。Docusaurus 的内置 i18n
会为每个语言区域生成独立的输出树。
另请参阅
用 ❤ 和 Htmlpress 构建