Starlight vs Livemark
更新于 2026年11月12日
Starlight 是 Astro 官方的文档主题,由 Astro 团队维护。它采用 Astro 的岛屿架构(默认零 JavaScript,按需启用交互组件),并支持 MDX 内容。
概览
| 维度 | Livemark | Starlight |
|---|---|---|
| 语言 / 运行时 | TypeScript / Node 24+ | TypeScript / Node 18+ |
| UI 框架 | React 19 | Astro 组件(HTML 优先),可选 React/Vue/Svelte/Solid 岛屿 |
| 构建工具 | Vite + TanStack Start | Astro(底层基于 Vite) |
| 内容格式 | Markdown + MDX | Markdown + MDX + MDoc |
| 许可证 | MIT,自托管 | MIT,自托管 |
| 输出模式 | 预渲染静态站点(支持 SSR) | 预渲染静态站点(通过适配器支持 SSR) |
架构
Livemark 在构建时(预渲染)和运行时(客户端水合)渲染 React。每个页面都会加载 React;交互能力无处不在。
Starlight 采用 Astro 的岛屿模型:页面在构建时渲染为 HTML,默认零 JavaScript。交互组件是显式声明的「岛屿」,按需进行水合。Starlight 的默认主题主要由 Astro 组件构成(无客户端 JS);使用 React/Vue/Svelte 需要主动启用。
两者都通过 Vite 构建。Astro 的组件模型是它自己的 .astro 语法(HTML + JS frontmatter,经静态分析)。Livemark 的组件模型是 React。
Livemark 对内容布局没有限制:它按 glob 扫描(livemark.config.ts 中的 include/exclude),每篇文章的 URL 默认取决于文件在其 include glob 下的位置,也可以由前置元数据 frontmatter 中的 path: 字段指定。不强制要求 docs/ 文件夹——项目可以从 README.md、docs/、blog/、各个包的 README 或其他任何地方获取文章。Starlight 要求内容放在 src/content/docs/(Astro 的 content collections 目录)中,路由由该根目录下的文件路径推导而来。
内容能力
两者都支持带 frontmatter 的 Markdown + MDX。
Starlight 还支持 MDoc(Markdoc),用于编写带自定义标签、结构化且经过校验的内容。.mdx 文件中的组件默认是 Astro 组件;框架组件(React 等)需要显式的 client:* 指令才能水合。
Livemark 在 .mdx 文件中的组件都是 React;水合方式统一。
frontmatter 的结构不同:Starlight 使用 title、description、sidebar、tableOfContents、editUrl、lastUpdated。Livemark 使用 path、order、icon、sidebar、date、tags。
功能对比
| 能力 | Livemark | Starlight |
|---|---|---|
| 版本管理 | 部分支持(栏目或按分支部署) | 否(社区插件) |
| 国际化(i18n) | 是(内置) | 是(内置) |
| 搜索 | 是(Orama,客户端) | 是(Pagefind,内置) |
| 默认零 JS | 否(React 会水合) | 是(岛屿架构) |
| 博客 | 是(内置栏目类型) | 否(使用 Astro 的 content collections) |
| 更新日志 | 是(栏目类型) | 否 |
| 站点地图 | 是 | 是 |
| RSS | 是(每个博客栏目) | 通过 @astrojs/rss 集成 |
| 主题 | 通过 .livemark/ 覆盖组件 | 通过 Starlight 插槽覆盖组件 |
| 插件 | Vite 插件 + textlane | Astro 集成 + Starlight 插件 |
| 自定义路由 | .livemark/routes/(TanStack Router) | 与 Starlight 内容并存的 Astro 页面 |
输出与部署
两者都生成由静态 HTML 和资源文件组成的目录。Starlight 默认输出到 dist/;Livemark 输出到 .livemark/build/client/。托管方式完全相同——各平台指南参见 Livemark 的部署。
Starlight 沿用 Astro 的适配器体系,支持在 Cloudflare、Netlify、Vercel、Node 和 Deno 上运行 SSR。Livemark 则依靠 TanStack Start 的 Nitro 预设实现同样的动态部署。
另请参阅
用 ❤ 和 Livemark 构建