pyssgA tiny-kernel, plugin-driven static site generator

Cấu hình

pyssg được cấu hình bằng một file Python - mặc định là pyssg.config.py - phơi ra một hàm config() trả về một đối tượng Config. Dùng Python (thay vì YAML hay TOML) nghĩa là bạn có thể truyền thẳng các instance plugin và dùng bất kỳ logic nào bạn muốn, y hệt webpack.config.js.

Hàm config()

from pyssg.config import Config
from pyssg_cli.presets import blog


def config() -> Config:
    return Config(
        src="content",
        out="public",
        options={"title": "My Blog", "base_url": "https://example.com"},
        plugins=blog(page_size=10),
    )

Đối tượng Config

TrườngKiểuMô tả
srcpathThư mục chứa các nguồn Markdown.
outpathThư mục mà trang đã build được ghi vào.
pluginslistCác instance plugin, áp dụng theo thứ tự.
optionsdictCác giá trị toàn-trang phơi ra cho template dưới dạng site.

srcout chấp nhận chuỗi hoặc đối tượng Path.

Tùy chọn của site

Bất cứ thứ gì bạn đặt vào options đều có sẵn trong template dưới dạng đối tượng site:

Config(..., options={"title": "Docs", "author": "Jane"})
<title>{{ site.title }}</title>
<meta name="author" content="{{ site.author }}">

Chọn plugin

Bạn có thể dùng một preset hoặc tự ráp plugin bằng tay. Thứ tự rất quan trọng: plugin chạy theo thứ tự được liệt kê, và bên trong một lifecycle hook thứ tự được tinh chỉnh thêm theo stage của từng plugin. Xem Vòng đời để có bức tranh đầy đủ.

from pyssg_plugins import (
    ReadFile, Frontmatter, Markdown, Template, WriteFile,
)

def config() -> Config:
    return Config(
        src="content",
        out="public",
        plugins=[
            ReadFile(),
            Frontmatter(),
            Markdown(),
            Template(directory="layouts"),
            WriteFile(clean=True),
        ],
    )