Markdown、shell、pandoc を使用して静的サイトと Atom フィードを生成します。
git clone pdssg、理想的にはサイトのソース ディレクトリの横にあります。
git clone https://github.com/torresjrjr/pdssg
pdssg を実行して静的サイトを構築するには、サイトのソース ディレクトリの上の 1 つのディレクトリで pdssg スクリプトを実行します。
$ ls
src/ pdssg/
$ ./pdssg/pdssg
pdssg は、コマンドライン フラグを持たない単一の実行可能なシェル スクリプトです。これは、既存の隣接ディレクトリsrc/
(ソース) から、サイトのコンテンツ (HTML Web ページに変換されるマークダウン ファイルやその他のファイル) を含む隣接サイト ディレクトリdst/
(宛先) を生成するだけです。
pdssg の設計はモジュール式でツリーベースです。サイトのソース ディレクトリの例を次に示します。
src/
|-- _ignore
|-- _feeds
|-- index.md
|-- about.md
|-- posts.md
|-- posts/
| |-- _drafts/
| | `--- 2020-04-01-bored.md
| |-- 2020-01-01-new-year.md
| |-- 2020-02-01-corona-what.md
| `-- 2020-03-01-stuck-at-home.md
|-- feeds/
| `-- posts.md
|-- assets/
| `-- style.css
|-- _templates/
| |-- atom.xml
| `-- main.html
`-- _includes/
|-- header.html
|-- footer.html
`-- meta.html
結果のビルド ディレクトリは次のとおりです。
dst/
|-- index.html
|-- about.html
|-- posts.html
|-- posts/
| |--- 2020-01-01-new-year.html
| |--- 2020-02-01-corona-what.html
| `--- 2020-03-01-stuck-at-home.html
|-- feeds/
| `--- posts.html
`-- assets/
`--- style.css
注: アンダースコア_
で始まるファイルとディレクトリは破棄されます。
マークダウン ファイルは HTML ファイルに変換され、Web ページとして使用できるようになります。例外は、 .gitignore
ファイルなどの./_ignore
ファイル内のパターンと一致するファイルパスです。
pdssg は、Markdown ファイルに YAML フロントマター ブロックがあることを期待します。これは、残りのファイル内容の前に、 ---
のペアで囲まれた YAML メタデータのブロックです。
フロントマターには少なくともtitle
値が必要です。これは<h1>
タイトル見出しの作成に使用されます。 author
とdate
値は一般的であり、必要に応じて推奨されます。
マークダウン ファイルの例:
---
title : My Webpage Title
author : John Smith
date : 2020-12-30
---
## Subheading
contents...
例のように、HTML ファイルと Atom ファイルの生成には、 _includes
ディレクトリと_templates
ディレクトリが使用されます。その後、それらは破棄されます。
_templates
内のファイルの場合:
atom.xml
は HTML ドキュメントを作成するために使用されます。main.html
は Atom フィードの作成に使用されます。 _includes
内のファイルの場合:
meta.html
は、 <meta>
タグ内のドキュメント ヘッダーに挿入されます。header.html
は、メインコンテンツの前の<body>
タグ内の本文に挿入されます。footer.html
は、本文のメインコンテンツの後の<body>
タグ内に挿入されます。Atom フィードは、より新しく、より堅牢なシンジケーション形式に基づく RSS のようなフィードです。これらは基本的に RSS と同じように使用され、そのように呼ばれます。 Atom フィードを使用すると、読者はブログなどの Web サイトの新しいコンテンツを購読できます。
pdssg は、ディレクトリのファイルをフィード エントリとして使用して、ディレクトリから Atom フィードを作成できます。これを行うには、フィード用に指定されたディレクトリを作成し、次のように「Atom シード ファイル」を作成する必要があります。
./feeds/
) を作成し、そのパスを構成ファイル_feeds
に書き込みます。./posts/
)。./feeds/posts/
)。.md
ファイル拡張子を追加します (例: ./feeds/posts.md
)。デモンストレーションについては、上記のサンプル サイト( posts/
ディレクトリ) を参照してください。
Atom シード ファイルは Atom フィード ファイルに変換されます。この結果のフィードは新しいパスに存在しますが、拡張子は.md
ではなく.xml
になります。この例では、アトム フィードはexample.com/feeds/posts.xml
に表示されます。 ./posts.md
ファイルはフィードには必要なく、ディレクトリのみに必要であることに注意してください。
注: Atom エントリは、YAML フロントマターで指定されたdate
ではなく、対応するファイル名の英数字順に並べられます。
このプロジェクトは、私自身のサイトのための個人的な挑戦から生まれました。親切なブロガーさんからのリクエストで、クリーンアップして公開しました。
連絡先: t.me/torresjrjr