使用 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