【Hacker News搬运】Soupault:一个静态网站管理工具
-
Title: Soupault: A static website management tool
Soupault:一个静态网站管理工具
Text:
Url: https://soupault.app/
Soupault 是一个基于 HTML 元素树 static website generator/framework,能够自动处理它们。它可以被描述为一个机器人网站管理员,可以根据您的规则编辑 HTML 页面,而不会厌倦。 您可以使用 Soupault 来制作博客和其他类型的网站,就像其他 SSGs (Jekyll, Hugo, Eleventy 等) 一样。然而,您还可以将其用作现有网站的后处理器 - 其他工具不支持的使用案例。 Soupault 高度可配置、可扩展,并设计为您提供对网站生成过程的完全控制。如果您已经熟悉其他静态网站生成器,请查看与 Hugo,Zola 和 Jekyll 的比较。您可能还想阅读常见问题解答。 快速开始 Soupault 非常简单易安装:如果您是 Linux (x86-64) 用户,macOS 或 Microsoft Windows 用户,您可以下载可执行文件。 如果您要建立博客或在线书籍,您可以获取一个准备好的蓝图。 如果您想要自定义设置,请阅读指南以了解 Soupault 的 workflow: 建立博客设置从零开始。 将 Soupault 用作现有网站的后处理器。 为什么是 Soupault? Soupault 与其他静态网站生成器不同 - 它工作在 HTML 元素树级别。大多数 SSGs 将 HTML 视为一种不可读或不可编辑的模板格式。 Soupault 将 HTML 视为一种一等格式,这使得其他 SSGs 无法实现许多用例和功能。 以任何格式存储页面 Soupault 处理 HTML 元素树,因此您可以以任何可以转换为 HTML 的格式存储您的页面。 您可以为不同的文件扩展配置 HTML 转换命令,Soupault 在加载您的页面时会自动调用它们。 无论您想要使用什么格式和工具,都可以轻松实现。您想要使用 cmark 对 Markdown,pandoc 对 reStructuredText 以及 Asciidoctor 对 AsciiDoc 进行处理吗?很简单: [预处理器] md = `cmark --unsafe --smart` rst = `pandoc -f rst -t html` adoc = `asciidoctor --embedded -o -` 或者如果您喜欢,可以手动编写 HTML 页面。 将任何外部工具带入您的 workflow,并删除不必要的客户端 JavaScript 许多人添加非交互式客户端 JavaScript 以补偿他们的 SSGs 中缺失的功能。Soupault 帮助您通过在构建时间预渲染 HTML 以及外部工具的输出,使页面更轻便。 在最简单的情况下,您可以将外部程序的输出包含在您的页面中,使用 CSS 选择器识别任何位置。 [小部件.页面生成日期] 小部件 = "exec" 命令 = "date -R" 选择器 = "datetime#generated-on" 但是,您也可以将元素内容通过外部程序进行管道处理并将其插入回来。运行您最喜欢的语法高亮器对代码示例进行处理,自动检查它们是否编译 - 可能性很多。 这就是这个网站使用 Andre Simon 的 highlight 对 <pre> 和 <code> 标签中的源代码进行处理的方式: # 对 <* class="language-*"> 元素通过语法高亮器运行 [小部件.高亮显示] 小部件 = "预处理元素" 选择器 = '*[class^="language-"]' 命令 = 'highlight -O html -f --syntax=$(echo $ATTR_CLASS | sed -e "s/language-//")' 使用额外的脚本,您可以做更多的事情,例如在构建时间使用 KaTeX 渲染数学。 从 HTML 提取页面元数据,无需前端 matter 大多数静态网站生成器要求您在“前端 matter”中编写元数据,但 Soupault 允许您直接从 HTML 中提取元数据。 您可以定义 CSS 选择器到元数据字段的映射。这就是您如何使用页面中的第一个标题标签(无论是 <h1>,<h2> 或 <h3>,取决于哪个存在)作为其标题添加所有页面到主页的方式: [索引] 索引 = true [索引.字段] 标题 = { 选择器 = ["h1", "h2", "h3"] } [索引.视图.页面列表] 页面 = "index.html" 索引选择器 = "main" 索引模板 = ''' <h2>所有页面</h2> <ul class="page-list"> {% for e in entries %} <li><a href="{{e.url}}">{{e.title}}</a></li> {% endfor %} ''' 利用 HTML 作为一等
Post by: yownv
Comments:
wonger_: I'm using soupault right now to make a simple company wiki (under a dozen pages). I like how it's HTML-first and easily customizable, compared to other static site generators that come with too many bells and whistles. Although now I have to make my own image compression script...<p>Also, fun fact: soupault is written in OCaml, which apparently has a really nice library for HTML manipulation: <a href="https://github.com/aantron/lambdasoup">https://github.com/aantron/lambdasoup</a>
wonger_: I-;我现在正在使用soupault制作一个简单的公司wiki(不到十几页)。我喜欢它的方式;它的HTML是第一位的,而且易于自定义,与其他带有太多提示的静态网站生成器相比。虽然现在我必须制作自己的图像压缩脚本<p> 此外,有趣的事实是:soupault是用OCaml编写的,它显然有一个非常好的HTML操作库:<a href=“https://;/;github.com/!aantron/:lambdasoup”>https:///;github.com/;aantron;lambdasoup</a>