20个静态网站生成器按GitHub星标排完,我发现星标和能不能用完全是两回事
这份清单收录 20 个开源的静态网站生成器,按 GitHub 星标数量降序排列。每一项给出项目背景、创建时间、作者、技术栈、项目地址与一段判断,并附官网首屏截图。
星标数与最近提交时间均于 2026 年 10 月 20 日抓取,反映某一时点的状态,不代表质量排序。同一批源数据中另有若干条目实为某个框架的起步模板或纯 HTML 页面,不构成独立框架,因此未纳入。
每一项都写明了不适用的情况。只讲优点的清单,对选型没有帮助。
1. Hugo(GitHub 星标 90,171)
Hugo 是用 Go 语言编写的静态网站生成器,2013 年 7 月由 Steve Francia 发起,目前由 Bjørn Erik Pedersen 主导维护。整个框架会被编译成一个二进制文件,不需要额外安装运行时,构建速度也一直是同类工具中的领先水平。它的核心基于 Go 和 Go template,不提供插件机制,功能扩展主要依靠 shortcode 和主题定制。官网 gohugo.io,代码托管于 gohugoio/hugo,GitHub 星标 90,171,最近一次提交在 2026 年 10 月。速度是 Hugo 最稳固的优势,代价是模板语法有一定学习门槛,主题质量参差不齐,想做深度定制时往往得直接修改主题源码。

2. Docusaurus(GitHub 星标 66,531)
Docusaurus 由 Meta 开源,项目始建于 2017 年 6 月。它采用 React、MDX 和 webpack 技术栈,文档、博客、版本管理和多语言支持都已内置,主要配置集中在一个 JavaScript 文件中。官网 docusaurus.io,仓库 facebook/docusaurus,GitHub 星标 66,531,2026 年 10 月仍有提交。它的功能完整度在同类工具中很高,但体量也最大,首次构建通常需要几分钟。若只是用来搭建个人博客,多少有些过配。

3. Hexo(GitHub 星标 41,776)
Hexo 由 Tommy Chen(tommy351)于 2012 年 9 月创建,是中文技术社区使用较广的博客框架。技术栈是 Node.js 加 EJS 模板,Markdown 源文件经过渲染后生成静态 HTML;主题和插件则覆盖 SEO、RSS、本地搜索等常见需求。官网 hexo.io,仓库 hexojs/hexo,GitHub 星标 41,776。它的优点是上手成本低,生态也比较完整。问题在于构建采用串行渲染,文章数量上千后耗时会明显增加;另外,不少主题已经多年没有维护,在新版 Node 下容易遇到兼容性报错。

4. VuePress(GitHub 星标 22,716)
VuePress 由 Evan You 和 Vue 团队于 2018 年 4 月发布,主要用 Markdown 组织内容,再通过 Vue 组件扩展页面。它最初基于 Vue 2 和 webpack,2.x 则迁移到了 Vue 3 与 Vite,也因此造成了插件生态的分裂。官网 vuepress.vuejs.org,仓库 vuejs/vuepress,GitHub 星标 22,716。它曾是 Vue 生态中搭建文档站的主流方案,如今已经被 VitePress 取代。仓库最近一次提交在 2024 年 8 月,目前更适合用于存量项目维护。

5. MkDocs(GitHub 星标 22,505)
MkDocs 由 Tom Christie(Django REST framework 作者)于 2014 年 1 月创建,使用 Python 编写,以 Jinja2 渲染页面,配置集中在一个 YAML 文件中。官网 mkdocs.org,仓库 mkdocs/mkdocs,GitHub 星标数为 22,505,2025 年 10 月仍有提交。配置成本在同类工具中最低,导航和站点信息都集中在一处;默认主题相当朴素,最终观感基本取决于第三方主题 Material for MkDocs。它的博客功能偏弱,定位始终是项目文档。

6. Eleventy(GitHub 星标 19,977)
Eleventy 由 Zach Leatherman 于 2017 年 11 月创建,2018 年发布首个公开版本。它以 Node.js 实现,支持 Nunjucks、Liquid、Handlebars、JavaScript 等多种模板语言,默认不会向页面注入客户端 JavaScript。官网 11ty.dev,仓库 11ty/eleventy。仓库现已更名为 Build Awesome,README 仍以 Build Awesome(Eleventy)并称,GitHub 星标数为 19,977。设计上最为克制,不预设目录结构和输出方式;代价是所有约定都需要自行建立,照搬他人的配置往往无法直接运行。

7. VitePress(GitHub 星标 18,418)
VitePress 由 Vue 团队于 2020 年 4 月创建,基于 Vue 3 和 Vite,定位是文档站生成工具。默认主题内置搜索、暗色模式、代码组和侧边栏。官网 vitepress.dev,仓库 vuejs/vitepress,GitHub 星标数为 18,418,2026 年 10 月仍有提交。文档体验在同类工具中最好,默认主题几乎不需要修改;但用于纯博客场景时,需要自行实现列表页、分页和标签,社区博客主题的成熟度也比较有限。

8. React Static(GitHub 星标 10,335)
React Static 由 Tanner Linsley 在 Nozzle.io 工作期间于 2017 年 9 月创建,使用 React 和 webpack 实现渐进式静态站点,路由与数据通过 static.config.js 统一声明。官网 react-static.js.org,仓库 react-static/react-static,GitHub 星标数为 10,335。作者本人已经公开说明停止投入,原因是难以与获得融资的 Next.js、Gatsby 竞争。仓库权限随后转手,2022 年 10 月之后便不再有提交。

9. Metalsmith(GitHub 星标 7,817)
Metalsmith 由 Segment 团队于 2014 年 2 月创建,主要作者是 Ian Storm Taylor。它的核心只做三件事:读取文件、执行插件链、写出文件。模板、分类、分页等功能,全部交给插件完成。官网 metalsmith.io,仓库 metalsmith/metalsmith,GitHub 星标数为 7817,2026 年 2 月仍有提交。Metalsmith 把“一切皆插件”的思路推到了极致,控制力很强,但代价是需要自行组装十几个插件,还要承担插件之间的质量差异。核心目前仍在维护,只是新插件已经很少。

10. Sapper(GitHub 星标 6,909)
Sapper 由 Svelte 团队于 2017 年 12 月创建,支持服务端渲染和预渲染,技术栈是 Svelte 与 Rollup。仓库 sveltejs/sapper,GitHub 星标数为 6909。SvelteKit 出现后,Sapper 已被官方归档,2023 年 1 月之后不再有提交。除非是在维护旧项目,否则现在没有使用它的理由。

11. Abell(GitHub 星标 444)
Abell 由 Saurabh Daware 于 2020 年 4 月创建,使用 TypeScript 实现,模板语法接近 Vue,编译后输出纯静态 HTML。官网 abelljs.org,仓库 abelljs/abell,GitHub 星标数为 444,2026 年 3 月仍有少量提交。它对 Vue 开发者比较友好,几乎不需要额外学习成本,生成的产物也很干净。不过,项目长期停留在 1.0.0-beta,作者的本职工作又在设计系统方向,整体迭代比较慢。

12. Sergey(GitHub 星标 305)
Sergey 由 Trys Mudford 于 2019 年 4 月创建。它并不是一个博客框架,更像是给已有 HTML 增加复用能力:把页头抽成独立文件,再通过 partials 和 slots 注入各个页面。官网 sergey.cool,仓库 trys/sergey,GitHub 星标数为 305。它解决的是“改一次导航,却要改上百个文件”这类具体问题,功能边界很清楚。不过,它没有文章列表、分页和 RSS,2022 年 7 月之后也不再有提交。

13. Nanogen(GitHub 星标 204)
Nanogen 由 Douglas Matoso(doug2k1)于 2017 年 9 月创建,使用 Node.js 实现,以 EJS 负责布局、Markdown 编写页面。项目源自作者那篇“用 40 行代码写静态站点生成器”的教程,所以代码量很小。文档 doug2k1.github.io/nanogen,仓库 doug2k1/nanogen,GitHub 星标 204,2026 年 3 月仍有提交。适合通过阅读源码理解原理,但功能边界也确实很小,不适合作为长期项目的框架。

14. blogc(GitHub 星标 192)
blogc 由 Rafael G. Martins 于 2015 年开源,使用 C 编写,定位是博客编译器:一次编译一个文件,再由 Makefile 组织整体构建,并自带一套接近 Markdown 的标记语言。官网 blogc.rgm.io,仓库 blogc/blogc,GitHub 星标 192,2024 年 6 月仍有提交。它把静态生成器还原成了编译器的形态,设计上最干净,也很适合用来理解这类工具的本质。不过,最后一个版本是 2021 年 1 月发布的 0.20.1,使用门槛偏高。

15. elm-starter(GitHub 星标 90)
elm-starter 由 Luca Muglia 于 2020 年 7 月创建,使用 Elm 编写应用,并在构建阶段预渲染成 PWA,关闭 JavaScript 后仍可浏览。仓库 lucamug/elm-starter,GitHub 星标 90。在 Elm 生态中,它少见地同时处理了预渲染、离线可用和 SEO,完成度较高。它的门槛不在工具本身,而在 Elm 语言;项目自 2022 年 12 月后不再有提交。

16. CMintS(GitHub 星标 38)
CMintS 由 Manvel Saroyan 于 2017 年 12 月建库,2019 年发布。项目使用 Node.js 实现,主题采用 EJS 与 LESS,内容则用 Markdown 编写。国际化能力,包括翻译串、locale 目录和 Crowdin 集成,都是框架内置的。官网 cmints.io,仓库 cmints/cmints,GitHub 星标 38。多语言站点开箱即用,这一点在同类工具中比较少见;但如果只是做单语言站点,使用它就明显偏重了。项目自 2021 年 1 月后也不再有提交。

17. Platframe(GitHub 星标 37)
Platframe 由 Cygnul(GitHub 账号 gidhon)于 2018 年 3 月创建,定位是一个结构化的前端开发平台。它使用 Pug、Stylus 和 JavaScript,以 Gulp 负责构建,也可以当作静态站点生成器使用。官网 platframe.com,仓库 platframe/platframe,GitHub 星标 37。它的架构分层比多数同类项目更认真,只是构建链还停留在 Gulp 时代,2023 年 1 月之后就没有新的提交了。

18. Stasis(GitHub 星标 27)
Stasis 由 GitHub 用户 Gioni06 于 2019 年 2 月创建,使用 TypeScript 编写,以 Handlebars 渲染 Markdown,再由 Parcel 处理静态资源。每个页面都可以挂载一个 GraphQL 查询,用来获取数据。官网 getstasis.com(现已下线),仓库 Gioni06/stasis-generator,GitHub 星标 27。页面级 GraphQL 的思路在当年算比较新,但实际用起来有些绕。同名项目还包括 Clojure 和 Python 版本,检索时容易混淆。2023 年 6 月之后,该项目也没有新的提交。

19. Orison(GitHub 星标 17)
Orison 由 Alex Lockhart(megazear7)于 2019 年 3 月创建,基于 lit-html 和 @lit-labs/ssr 进行渲染。布局会根据页面在目录层级中的位置自动套用,页面也可以声明为列表,用于批量生成。官网 orison.alexlockhart.me,仓库 megazear7/orison,GitHub 星标 17。到 2026 年 8 月仍有提交,npm 上的版本为 2.6.0。这是这批项目里少数仍在活跃维护的,思路也比较特别。不过它采用 GPL-3.0 许可证,商业项目接入前需要先评估。

20. 20ful(GitHub 星标 7)
20ful 由 GitHub 用户 punund 于 2020 年 3 月创建,使用 LiveScript 编写,内置 Markdown、Pug、Nunjucks、Stylus、Sass 等预处理器,导航和资源缓存表则由 front matter 驱动。仓库 punund/20ful,GitHub 星标 7,到 2026 年 2 月仍有提交。它的技术选型确实少见,功能组合却相当完整。只是外部使用者很少,看起来更接近作者自用的工具。

几点观察
按星标排完,最先显出来的是断层。前 10 位的星标都在 6,900 以上,第 11 位直接落到 444,中间没有过渡。头部由文档型框架与博客型框架共同占据,长尾则是个人项目和小规模实验。
第二个观察是星标与维护状态并不对应。星标最高的几个仍在持续提交,Orison(17 星)与 20ful(7 星)在 2026 年也有更新;反过来,React Static(10,335 星)与 Sapper(6,909 星)已经停更三年以上。判断一个项目还能不能用,看最近一次提交比看星标可靠。
第三点是定位差异比功能差异更值得关注。Hugo、Eleventy、Metalsmith 面向“自己搭结构”,Docusaurus、VitePress、MkDocs 面向“写文档”,Hexo、Abell、Sergey 面向“尽快出一个站点”。定位选错,功能再全也用不上。
如果只要结论:写博客优先 Hexo 或 Hugo;写文档按技术栈在 VitePress、Docusaurus、MkDocs 之间选;其余项目更适合当作阅读源码的样本,用来理解静态生成器在不同语言、不同年代里的实现方式。