静态站点生成器
stone-site的Python项目详细描述
石头
另一个静态网站生成器,支持插件。
用于(www blog).half.systems将markdown和jinja2转换为HTML。
安装
$ pip install stone-site
使用量
开始使用石头
# Create template layout stone example_site init --site-name 'example.com'# Generate site stone example_site generate # Add a new page stone example_site newpage --name "About Us"
默认情况下,stone配置为关闭markdown+yaml metadata+jinja2 将模板转换成html,但由于它支持自定义插件,因此可以生成 任何有代码的东西。
站点配置
配置文件
stone根据site.json的内容生成站点。 每个站点都可以指定要使用的后端、生成器和渲染器,自定义 版本将从$HOME/.stone目录加载。
示例
包含生成示例登录页和博客的示例项目 在斯通的项目来源中。您可以通过运行:
stone example generate
文件夹结构
stone最初设计用于生成half.systems的子域。这个 以下是站点的布局:
. ├── blog │ └── ... ├── main │ └── ... ├── site.json └── templates └── ...
^ a1}对于模板的位置是可挠曲的 和文件。因此,您不必为您的站点限制任何特定的布局。 您可以在每个站点中有单独的模板文件夹,也可以在 项目根目录。每个站点都可以指定其模板目录
页面
默认情况下,页面是标记文件,可以有可选的yaml元数据 描述页面的属性,包括标题和要使用的模板 使用。例如:
template: base.html
title: Hello, World
# This is a header
Here is some lovely content.
stone使所有元数据都可用于页面模板。任何数据模板都可以使用 可以嵌入到页面中。例如:作者的姓名、电子邮件、日期 佩奇已经写好了。行为取决于生成器和渲染器 使用。请参阅[渲染器](docs/renderers.md)和 [生成器](docs/generators.md)了解更多详细信息。
模板
默认情况下,模板是带有jinja2的html页面 加价。
base.html:
<html><head> {% block head %} <title>{{ title }}</title> {% endblock %} <head><body> {% block body %} <h1>{{ title }}</title><divid="post"><!-- Most likely we are going to pass more html here ---> {{ content|safe }} </div> {% endblock %} </body></html>
生成
使用项目的位置生成特定站点调用stone。 根文件夹。
stone root_folder generate
后端-文件
文件后端将每个文件写入指定的目标路径。
后端-s3
s3后端将把每个对象上传到指定的bucket。仅限当前 支持html页面,它们将被gzip并具有默认的缓存时间。 一小时。
此后端的最低要求是:
"backends":[{"type":"s3","bucket":"example.com",}]
全部选项是:
"backends":[{"type":"s3","bucket":"example.com","prefix":"website""cache-controller":"max-age:360",#https://tools.ietf.org/html/rfc5646"content-language":"en-GB","metadata":{"key":"value"}"tags":{"key","value"}}]