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 服务器
每月 212 次下载
55KB
1K SLoC
Rust 网站引擎
A Rust 网站引擎,或 arse
,是一个用 Rust 编写的静态网站生成器。它旨在为使用以下内容提供简单灵活的基座来托管网站:
- Tera 用于模板
- pulldown-cmark 用于 CommonMark 渲染
- routerify 来托管网站
- simplecss 用于默认样式
- rss 用于生成全站 RSS 源
用法
- 运行给定配置 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]
部分设置bind
和port
。 - 新主题作为数组元素添加
- 对于每个新主题,创建必要的路径
site/:topic/posts
和site/:topic/ext
。
- 对于每个新主题,创建必要的路径
[docpaths]
中的条目生成完整路径以保持完整性,但如果需要,也可以使用相对路径。- 根据上述示例,用户可以简单地使用
site/templates
和site/webroot
,并将目录从/home/user
移出。 - 请注意,
arse new
在当前工作目录中创建网站树和所有其他输出文件。
- 根据上述示例,用户可以简单地使用
- 如果请求的主题之一是
gallery
- 将为
/gallery/ext/*.jpg
生成一个简单的图片幻灯片。 - 显示将遵循与帖子相同的逆序字典序。
- 将为
MIME类型
版本0.16.0
在config.toml
文件中添加了mime_types
部分。这是一个从文件扩展名到所需MIME类型的最小映射集。这些映射用于从以下位置服务文件:
static/
:主题/扩展/
如果扩展名没有匹配项,或者文件完全没有扩展名,则默认为text/plain
。因此,为了与不同的反向代理、浏览器或其他应用程序实现最大兼容性,您必须为每个打算直接服务的扩展设置适当的MIME类型。
到1.0的路径
- 动态路由处理
- 在适当级别提供有意义的二进制活动日志记录
- 上下文特定的错误和处理
- 支持自定义Tera模板
- 支持自定义绑定地址和端口
- 支持favicon
- 支持特殊的
gallery
主题 - 支持RSS源
- 支持添加/删除主题
许可证
根据您的选择,许可协议为
- Apache许可证版本2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确说明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证定义,将根据上述协议双重许可,而不附加任何额外条款或条件。
依赖项
~20–32MB
~543K SLoC