技术预览提交反馈

Hugo vs Livemark

更新于 2026年11月12日

Hugo 是一款用 Go 编写的通用静态站点生成器。它以单个二进制文件分发,构建速度极快,借助 Docsy 和 Hugo Book 等社区主题,可用于从博客、作品集到文档站点的各种场景。

概览

维度LivemarkHugo
语言 / 运行时TypeScript / Node 24+Go(单个二进制文件,无运行时)
UI 框架React 19Go 模板(HTML + CSS)
构建工具Vite + TanStack StartHugo 二进制文件
内容格式Markdown + MDX带 Hugo shortcode 的 Markdown
许可证MIT,自托管Apache-2.0,自托管
输出模型预渲染静态页面(支持 SSR)预渲染静态页面

架构

Livemark 是一个基于 Vite + TanStack Start + React 构建的 Node CLI。编写遵循 JS/TS 的惯例。

Hugo 是单个 Go 二进制文件:没有运行时依赖,也没有安装包的步骤。站点结构基于约定:content/、layouts/、static/、themes/、config.toml(或 .yaml/.json)。布局使用 Go 的 html/template 语法。主题以 git 子模块的方式引入,或复制到 themes/<name>/ 中。

Hugo 并非专门面向文档。同一个二进制文件可用于博客、营销网站、作品集和文档;文档场景通过主题来支持,而不是通过一等的栏目类型。

在 Livemark 这边,内容的组织方式不受限制:它按 glob 扫描(livemark.config.ts 中的 include/exclude),每篇文章的 URL 默认取决于文件在其 include glob 下的位置,也可以由前置元数据 frontmatter 中的 path: 字段指定。不要求必须有 docs/ 文件夹,项目可以从 README.md、docs/、blog/、各个包的 README 或任何其他位置获取文章。Hugo 从 content/ 读取内容,URL 结构与目录树保持一致(并支持按栏目覆盖 frontmatter)。

内容能力

两款工具都接受带 frontmatter 的 Markdown。

最大的不对称在于组件嵌入:Livemark 使用 MDX(在 .mdx 文件中使用 React 组件)。Hugo 使用 shortcode,即在 Markdown 中通过 {{< shortcode-name arg="value" >}} 调用的 Go 模板函数。shortcode 以 Go 模板片段的形式定义在 layouts/shortcodes/*.html 中,并直接输出 HTML。

Hugo 支持基于 Goldmark 的 Markdown 扩展(脚注、表格、定义列表、通过插件实现的数学公式)。如需更丰富的交互,常见做法是嵌入一个 <script>,或在 shortcode 中以孤岛形式使用某个 JS 框架。

frontmatter 的结构不同:Hugo 接受 TOML、YAML 或 JSON 格式的 frontmatter,字段包括 title、date、draft、weight、taxonomies 以及用户自定义字段。Livemark 使用内联 YAML,字段为 path、order、icon、sidebar、date、tags。

功能矩阵

能力LivemarkHugo
版本管理部分支持(栏目或按分支部署)否(通过分支/站点手动实现)
国际化(i18n)是(内置)是(内置,多语言模式)
搜索是(Orama,客户端)否(由主题提供或使用外部服务)
博客是(内置栏目类型)是(任何栏目都可以按日期排序)
更新日志是(栏目类型)否(手动)
Sitemap是是(内置)
RSS是(按博客栏目)是(内置,按栏目)
主题通过 .livemark/ 覆盖组件支持模板覆盖的主题目录
插件Vite 插件 + textlaneHugo Modules(Go)、shortcode、hooks
自定义路由.livemark/routes/(TanStack Router)布局 + 内容栏目
独立工具链Node + npm单个 Go 二进制文件
构建速度Vite 级别的速度最快的 SSG 之一

输出与部署

两款工具都产出静态 HTML + 静态资源,可直接用于任意静态托管服务。Hugo 默认输出到 public/;Livemark 输出到 .livemark/build/client/。托管方式相同,各托管平台的指南请参阅 Livemark 的部署。

另请参阅

  • 编写——Livemark 的 Markdown 能力。
  • 定制——Livemark 的配置项与组件覆盖。
  • 对比——返回索引。

用 ❤ 和 Livemark 构建