29 个版本 (16 个破坏性更新)

0.17.1 2024 年 4 月 14 日
0.17.0 2023 年 8 月 5 日
0.16.0 2023 年 6 月 29 日
0.15.1 2022 年 5 月 26 日
0.11.0 2021 年 7 月 11 日

#103 in HTTP 服务器

Download history 3/week @ 2024-05-21 1/week @ 2024-05-28 3/week @ 2024-06-04 1/week @ 2024-06-11 22/week @ 2024-07-02 212/week @ 2024-07-30

每月 212 次下载

MIT/Apache

55KB
1K SLoC

Rust 网站引擎

A Rust 网站引擎,或 arse,是一个用 Rust 编写的静态网站生成器。它旨在为使用以下内容提供简单灵活的基座来托管网站:

用法

  • 运行给定配置 TOML 路径的现有站点:arse run config.toml
  • 可以使用 -v-vv 增加日志详细程度,默认级别为 INFO
  • 从用户输入创建并运行新站点:arse new
$ arse new
2021-05-01T17:34:11.155427589+00:00 [INFO] Logging started
2021-05-01T17:34:11.155543182+00:00 [INFO] Generating new site configuration
Please enter a name for the site:
Example Site
Please enter the site author's name:
Arthur Writeson
Please enter the base URL for your site:
https://www.example.com
Please enter comma-separated site topics:
one, two, three
2021-05-01T17:34:26.501980660+00:00 [INFO] Creating site filesystem tree
2021-05-01T17:34:26.504816188+00:00 [INFO] Writing site configuration to disk

配置

以下是一个示例配置,如下所示生成

[site]
name = 'Example Site'
author = 'Arthur Writeson'
url = 'https://www.example.com'
template = 'default.tmpl'
topics = [
	'one',
	'two',
	'three',
]

[server]
bind = '0.0.0.0'
port = 9090

[docpaths]
templates = '/home/user/site/templates'
webroot = '/home/user/site/webroot'

[mime_types]
css = "text/css"
gif = "image/gif"
jpg = "image/jpeg"

渲染和样式

默认模板 default.tmpl 已作为二进制文件中静态提供的。要更改 Tera 模板,请将您的自定义模板添加到在 [docpaths] 配置部分中引用的模板目录中。一旦模板位于模板目录中,请将 templates 参数在 [site] 配置部分中的引用更改为模板的文件名。现在将在运行时加载此模板。

以下元素可用于 Tera 上下文中的渲染

  • site,直接映射到 site 配置部分中可用的字段
  • post,在从 site/:topic/posts/:post.md 服务器单篇文章时可用
    • 在服务 GET /:topic/posts/:post 时使用,其中 :post 是去掉扩展名的 markdown 文件名
  • posts,一个从site/:topic/posts/*.md中生成的HTML渲染的逆序字典序列表
    • 当处理GET /:topic

进一步定制

  • 可以在[server]部分设置bindport
  • 新主题作为数组元素添加
    • 对于每个新主题,创建必要的路径site/:topic/postssite/:topic/ext
  • [docpaths]中的条目生成完整路径以保持完整性,但如果需要,也可以使用相对路径。
    • 根据上述示例,用户可以简单地使用site/templatessite/webroot,并将目录从/home/user移出。
    • 请注意,arse new在当前工作目录中创建网站树和所有其他输出文件。
  • 如果请求的主题之一是gallery
    • 将为/gallery/ext/*.jpg生成一个简单的图片幻灯片。
    • 显示将遵循与帖子相同的逆序字典序。

MIME类型

版本0.16.0config.toml文件中添加了mime_types部分。这是一个从文件扩展名到所需MIME类型的最小映射集。这些映射用于从以下位置服务文件:

  • static/
  • :主题/扩展/

如果扩展名没有匹配项,或者文件完全没有扩展名,则默认为text/plain。因此,为了与不同的反向代理、浏览器或其他应用程序实现最大兼容性,您必须为每个打算直接服务的扩展设置适当的MIME类型。

到1.0的路径

  • 动态路由处理
  • 在适当级别提供有意义的二进制活动日志记录
  • 上下文特定的错误和处理
  • 支持自定义Tera模板
  • 支持自定义绑定地址和端口
  • 支持favicon
  • 支持特殊的gallery主题
  • 支持RSS源
  • 支持添加/删除主题

许可证

根据您的选择,许可协议为

贡献

除非您明确说明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证定义,将根据上述协议双重许可,而不附加任何额外条款或条件。

依赖项

~20–32MB
~543K SLoC