使用 Markdown、shell 和 pandoc 產生靜態網站和 Atom feed。
git clone pdssg,最好在您的網站來源目錄旁邊。
git clone https://github.com/torresjrjr/pdssg若要執行 pdssg 並建置靜態站點,請在站點來源目錄上方的目錄中執行 pdssg 腳本。
$ ls
src/ pdssg/
$ ./pdssg/pdssg pdssg 是單一可執行 shell 腳本,沒有命令列標誌。它只是從現有的相鄰目錄src/ (來源)和網站內容(要轉換為 HTML 網頁的 Markdown 檔案和其他檔案)產生相鄰網站目錄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
注意:以下劃線_開頭的檔案和目錄將被丟棄。
Markdown 文件將轉換為 HTML 文件,準備好作為網頁。例外情況是與./_ignore檔案中的模式相符的檔案路徑,例如.gitignore檔案。
pdssg 期望 Markdown 文件有一個 YAML frontmatter 區塊,它是由一對---包圍的 YAML 元資料塊,位於文件內容的其餘部分之前。
frontmatter 至少應該有一個title值,它將用於製作<h1>標題。 author和date值很常見,並在適當時推薦。
Markdown 檔案範例:
---
title : My Webpage Title
author : John Smith
date : 2020-12-30
---
## Subheading
contents...如範例中所示, _includes和_templates目錄將用於產生 HTML 和 Atom 檔案。然後它們被丟棄。
對於_templates中的文件:
atom.xml用於製作 HTML 文件。main.html用於製作 Atom feed。對於_includes中的檔案:
meta.html插入到文件標題的<meta>標記內。header.html插入正文中的<body>標籤內,位於主要內容之前。footer.html插入正文中的<body>標記內,位於主要內容之後。Atom 提要是類似 RSS 的提要,基於更新、更強大的聚合格式。它們本質上就像 RSS 一樣使用和引用。 Atom feed 讓讀者訂閱網站的新內容,例如部落格。
pdssg 可以從目錄建立 Atom feed,並將目錄的檔案作為 feed 項目。為此,您需要為您的提要建立一個指定的目錄,並建立一個“Atom 種子檔案”,如下所示:
./feeds/ )並將其路徑寫入設定檔_feeds./posts/ )。./feeds/posts/ )。.md檔案副檔名附加到路徑(例如./feeds/posts.md )。請參閱上面的範例網站進行示範( posts/目錄)。
Atom 種子檔案將轉換為 Atom feed 檔案。產生的提要將存在於新路徑中,但副檔名為.xml而不是.md 。在此範例中,原子提要將出現在example.com/feeds/posts.xml中。請注意, ./posts.md檔案對於提要來說不是必需的,而只是一個目錄。
注意: Atom 條目按其對應檔案名稱的字母數字順序排序,而不是按其 YAML frontmatter 指定的date排序。
這個專案是出於我自己網站的個人挑戰而誕生的。應一位友好部落客的要求,我將其清理並公開。
聯絡我:t.me/torresjrjr