一个用 Swift 编写的静态站点生成器。它是 Alejandro M. P. 背后的引擎。
在 回到 Genesis 的基础 中了解更多信息。
这个生成器是根据我的需求定制的。虽然它很灵活,能够解决你的问题,但它的设计目标不是快速上手,而是易于维护。如果你正在寻找更易于上手的项目,我建议你看看社区的其他项目,如 Ignite、Publish、Toucan 或 其他。
- Core 框架为你提供 API 来加载内容和生成页面。
- 简单的函数调用。没有花哨的声明式规则或步骤系统。
- 过程式的。你调用函数,而不是声明为站点的一部分,你可以按照你想要的方式调用函数。
- 没有硬编码的内容或行为。如果你想在最初五分钟的兴奋之后自定义任何东西,你不会遇到任何困难。
- 你需要自己添加 RSS、Sitemap、Robots...
- 你需要定义
ContentLoader 来加载动态 Content
- 你需要定义
Content 是什么,并且可以拥有任意多的类型
- 你可以按照你想要的方式加载内容(从文件、数据库、CMS...)
- 可以使用任何 Markdown 解析器
GenesisMarkdown 是一个独立的模块,它使用 apple/swift-markdown
- 这允许你将 Markdown 树作为你内容的一部分,直到你想要生成 HTML 的最后一刻,这样生成的各个部分都可以检查甚至操作该树。
- 如果你不需要这个加载器功能,你可以直接创建页面。
- 你可以直接将静态的单个 Page 实例传递给生成器
- 非常适合单页面,如主页、关于页面...
Page 可以访问 Context,所以你可以像创建索引页面一样轻松地创建其他页面
- 你可以使用
PageProvider 动态地实例化其他页面
- 这允许你从加载的内容中实例化每个实例。例如博客文章。
- 页面非常灵活
- 只需要一个路径来知道页面最终在站点中的位置。没有其他要求。
- 在页面中,你必须返回
String,通常是 HTML,以便保存到磁盘
- 其他一切都取决于你想要什么。它们只是 Swift 类型,所以你可以保留任何你想要的数据,使用 async,或者在 inits 中传递你需要的数据,这对于
PageProvider 很有用
- 没有硬编码的主题
- 没有硬编码的 Web 依赖项 (css 框架、js 等)
- HTML 生成只是输出字符串
- 没有花哨的 DSL 用于硬编码到库中的类型化 Swift HTML
- 这提供了在生成 HTML 方面的完全灵活性
- 可以使用基本的 Swift 插值 HTML 字符串
- 或使用来自 HTML 文件的模板
- 或使用任何类型化的 Swift HTML 库
Genesis 是一个 Swift 包,因此你只需要依赖它。
.package(url: "https://github.com/alexito4/Genesis.git", branch: "main")
并在你的目标中包含你需要的模块
// The engine
.product(name: "Genesis", package: "Genesis")
// Markdown support
.product(name: "GenesisMarkdown", package: "Genesis"),
查看 示例 以了解如何使用 API。