Skip to main content

A simple static site generator

Project description

TinySSG

概要

TinySSGは、ファイルベースルーティングのシンプルな静的サイトジェネレータです。 ページを簡単な構造のTinySSGPageクラスを継承したPythonコードで記述することで単純さと柔軟性を両立しています。

インストール

pip install tinyssg

使い方

ディレクトリ構成

以下のようにディレクトリを構成します。ディレクトリ名はオプション引数で変更可能です。

--- proect
    |-- pages        SSGの対象となるPythonファイルを配置します
    |-- libs         SSG・デプロイの対象にならないPythonファイルを配置します(ライブラリなど)
    |-- static       SSGの対象にならない静的ファイルを配置します(css, 画像など)
    |-- dist         SSGの結果が出力されるディレクトリです。このディレクトリの中身をWebサーバに配置することでWebサイトとして公開できます。
         |-- static  staticディレクトリはこのディレクトリにコピーされます

pages, libs, staticディレクトリは、開発サーバー起動時に監視され、ファイルが変更されると自動的にサーバーを再起動します。

ページの作成

Pageディレクトリ内にPythonファイルを作り、TinySSGPageクラスを継承したクラスを作成します。

from tinyssg import TinySSGPage

class IndexPage(TinySSGPage):
    def query(self):
        return {
            'title': 'Index',
            'content': 'Hello, World!'
        }

    def template(self):
        return '''
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>{{ title }}</title>
</head>
<body>
  <h1>{{ title }}</h1>
  <p>{{ content }}</p>
</body>
</html>'''

queryメソッドでテンプレートに渡すデータを返し、templateメソッドでHTMLテンプレートを返します。 TinySSGは、これらのメソッドの返り値を使ってHTMLを生成します。

queryメソッドが返すデータは、Python辞書形式またはPython辞書のリスト形式である必要があります。 辞書形式の場合はpythonファイル名のHTMLファイルが生成され、リスト形式の場合はPythonファイル名と同じディレクトリが作成され、デフォルトでは1からの数字.htmlのファイル名でHTMLファイルが生成されます。 returnの際にタプルとしてリストと一緒にキー名を表す文字列を返すと、そのキーに対応する値をファイル名としてHTMLファイルが生成されます。

TinySSGはデフォルトでは単純にテンプレートの{{ キー名 }}で囲まれた部分をqueryメソッドの返り値である辞書のキーに対応する値で単純に置換するだけですが、 renderメソッドをオーバーライドすることで、より複雑な処理を行うこともできます。Jinja2などのテンプレートエンジンを使うこともできます。

また、translateメソッドをオーバーライドすることで、レンダー後のテキストを最終的なHTMLに変換する処理を定義することもできます。 ここでmarkdownライブラリを使って変換する処理を記述すればテンプレートをHTMLではなくMarkdownで記述することができます。

それぞれページごとに定義することになりますが、単純なPythonクラスですので複数のページに適用したい場合は共通部分を定義したクラスを作成し、それを継承することでコードをコピーすることなく簡単に適用することができます。

HTMLの生成

python -m tinyssg gen

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tinyssg-0.0.5.tar.gz (11.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tinyssg-0.0.5-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file tinyssg-0.0.5.tar.gz.

File metadata

  • Download URL: tinyssg-0.0.5.tar.gz
  • Upload date:
  • Size: 11.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for tinyssg-0.0.5.tar.gz
Algorithm Hash digest
SHA256 a6c7cb6fa6c9036a68606036e9830119f762b57031da28831e2f4e4fc0e7725d
MD5 7e1c7c19bf9965e71b68d96a49a04737
BLAKE2b-256 0a5f569d7f917c0f0c43c9bcefb7015b1f648b603b2d596d8457126bc390f31a

See more details on using hashes here.

File details

Details for the file tinyssg-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: tinyssg-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.7

File hashes

Hashes for tinyssg-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1523d46a85458f18b11544c6cd20a7f41ccf4071646c4bf66765da58097836b2
MD5 05d608951e6fbc1e6ea1df467d1d9c44
BLAKE2b-256 491ffe71b0413bee64b1b0a0ce2264c81046f2305426331bbc33a0f34138e75c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page