静态站点生成器

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"}}]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ImageIO。写入()低质量图像   使用安卓的设备屏幕大小的java拖放图像   java Adler32重复速度非常快   java在使用Burp Suite Community Edition时遇到此错误   java是否可以在交换机中使用已存在的字符串?   java:把反斜杠看作正常字符的方法   java如何创建Criteria Builder查询来连接三个具有一对一和多对一实体关系的表?   Java Spark:如何在数据集上进行flatMap,并为后续的groupBy提供新的模式?   JavaTestNG运行每个方法,并忽略TestNG中包含的方法。xml   无法使用Java运行linux命令   java我可以用什么来代替AudioPlayer。游戏者停止();?   关于如何使用pop3使用javamail从gmail帐户删除电子邮件的java查询   java Firebase Android数据库查询(读取数据)