Hexo 是一個快速、簡單且強大的靜態網站生成器,專門用於建立部落格。在上一篇文章中,講述了如何安裝、基本設定與佈署到Github上。本次將紀錄,涵蓋主題安裝、常用指令介紹、資料夾與文章結構,以及幾款常用的文章撰寫工具。透過這些資料,將能夠快速了解並上手使用 Hexo 。
主題選擇與安裝
若不想使用 Hexo 的預設主題,Hexo 也支援主題的更換功能。
以下是更換主題的步驟,
選擇新主題
首先,選擇一個主題,可以在 Hexo 官方主題網站上瀏覽可用的主題,又或是在網路上尋找。
在這裡,個人選用的主題為 Volantis
,以下將以這個主題為範例進行示範
安裝新主題
在您的 Hexo blog 資料夾中,啟用終端機,並且輸入下方指令
1 | npm i hexo-theme-volantis |
修改 _config.yml
檔案
在 Hexo blog 資料夾中,找到 _config.yml
檔案,並將 theme
設定更新為新主題的名稱
1 | # Extensions |
這樣就完成了 Hexo 的主題更換,
以下是啟動伺服器後,網站套用新主題的模樣
每個主題的配置可能有所不同。
如果有機會的話,會在另篇文章分享關於 Volantis
主題的設定說明
指令介紹
以下是一些 Hexo 的常用指令,這些指令可以幫助你進行網站開發、生成和部署等操作。
不過個人使用一陣子後,基本上只使用前三個指令。
啟動本地伺服器
啟動一個本地伺服器,通常網址為 http://localhost:4000
1 | hexo server |
或簡寫為
1 | hexo s |
產生靜態文件
將內容從 Markdown 轉換成 HTML,並將放到 public
資料夾中
1 | hexo generate |
或簡寫為
1 | hexo g |
清除靜態文件
刪除 public
資料夾中的所有文件,通常用在重新產生靜態文件之前
1 | hexo clean |
或簡寫為
1 | hexo cl |
建立發布文章
建立一篇發布文章,會在 source/_posts
中生成一個檔名和標題為 <title>
Markdown 的檔案
1 | hexo new post <title> |
建立草稿文章
建立一篇草稿文章,會在 source/_draft
中生成一個檔名和標題為 <title>
Markdown 的檔案,
當產生靜態文件時,該文章將不會被處理。
若要將其轉為已發布文章,需手動將檔案移動到 _posts
資料夾中
1 | hexo new draft <title> |
佈署網站
將生成的靜態網站推送到指定的伺服器或 GitHub Pages。
※ 需安裝 Hexo 的自動佈署功能
1 | hexo deploy |
Hexo 資料夾與文章結構
在撰寫和新增文章之前,首先需要了解 Hexo 的資料夾結構和文章的基本組成。
這將有助於更好地管理內容並熟悉 Hexo 的運作原理。
資料夾結構
當初始化一個 Hexo 專案時,會生成以下資料夾和檔案,
1 | your-hexo-folder/ |
- node_modules:安裝的 Node.js 模組,Hexo 、插件或主題資料都會存放在此
- public:生成的靜態文件,當執行
hexo generate
指令後,靜態網站會存放在此資料夾中 - scaffolds:預設的文章模板,用於快速創建新文章,通常會放置草稿和正式文章的模板
- source:網站的主要內容資料夾,放置文章的md檔案
- _drafts:存放草稿文章的資料夾,這些文章不會在生成靜態文件時被處理
- _posts:正式文章的資料夾,這裡的文章將在網站上顯示
- _config.yml:網站的配置檔,包含主題、網址等基本設定
- themes:存放網站主題的資料夾
- package.json:專案的配置檔,包含依賴的模組和基本信息
文章結構
在 Hexo 中,文章是以 Markdown 語法編寫的 .md
檔案。
這些文章檔案放置於 source/_posts
資料夾中,然後使用 hexo generate
指令將 .md
檔轉換為 HTML 檔案,以供網站使用。
- 檔名與永久網址
每篇文章的 .md
檔名會自動成為該文章的永久網址的一部分。
因此,為文章檔案命名時需要特別注意,應避免使用空格或特殊符號。
- 文章前置資料
每篇文章的開頭需要包含 YAML 前置資料(用 ---
包圍的區塊),這部分用來定義文章的基本屬性。以下是前置資料的範例,
1 | --- |
- title:文章的標題
- author:文章的作者名稱,可以選擇是否顯示在文章中
- headimg:文章的封面圖 URL,通常顯示在文章的封面或摘要中
- categories:文章的分類,可以包含一個或多個分類
- tags:文章的標籤,可以有多個標籤
- date:文章的發布日期
- updated:文章的更新日期
文章管理
如前所述,Hexo 會在生成靜態文件時,將 source/_posts
資料夾中的 .md
檔案轉換為 HTML,並根據文章中的分類和標籤進行整理。
由於 Hexo 是基於文件系統的靜態網站生成器,即使不使用 指令來建立文章,你也可以隨時手動新增或刪除 .md 檔案,並不會影響 Hexo 的執行,每次執行 hexo generate
時,Hexo 都會重新掃描 source/_posts
資料夾,並根據檔案自動生成網站內容。
這點與 WordPress 等動態網站系統不同,WordPress 的文章和數據存儲在 SQL 資料庫中,如果資料庫發生問題(如資料遺失或損毀),可能會導致網站出現嚴重錯誤。
而 Hexo 不依賴資料庫,因此在文章管理上更具靈活性。
文章撰寫工具
在 Hexo 中,文章的撰寫需要使用 Markdown 語法,如果對 Markdown 不熟悉,可以參考網上的教學資源,Markdown 是一種簡單而強大的文本標記語法。
以下將介紹幾款撰寫工具,這些工具可以更方便地撰寫或管理 Hexo 文章。當然,能夠撰寫 Markdown 的工具不只這些,僅分享一些自己用過的。
此外,這些工具都有預覽功能,但實際在網頁上呈現的效果可能會因為主題的不同而有所差異。因此,建議在佈署前先在本地啟動伺服器,檢查顯示效果。
使用 VS code
Visual Studio Code 是一款功能強大的文字編輯器,支援多種語法,包括 Markdown
你可以在編輯的同時,即時預覽文章的格式。
使用 Notion
如果不想直接編寫 Markdown 語法,Notion 是一個不錯的選擇,
Notion 是一款多功能筆記應用,支援 Markdown 語法,
而操作方式類似 WordPress,提供區塊式的編輯與移動功能,讓撰寫文章更加直觀。
可以直接在 Notion 中撰寫文章,並將其匯出為 Markdown 格式的檔案,
匯出後,只需稍作修改微調,例如增加文章最上方的 YAML 前置資料和修改檔名,
即可將檔案直接放入 _posts 資料夾中使用。
使用 Hexo admin
Hexo Admin 是為 Hexo 設計的簡易管理插件,
安裝後,你可以通過一個簡單的網頁介面來新增、編輯、管理文章,而不需要手動處理檔案,
這對於不太熟悉指令操作的使用者來說是一個方便的選擇。
首先,開啟終端機並輸入下面指令來進行安裝,
1 | npm install --save hexo-admin |
安裝完成後,可以像之前一樣啟動伺服器。
接著,在瀏覽器中訪問生成的網址,並在網址後加上 /admin
。
例如,網址為 http://localhost:4000
,則變成 http://localhost:4000/admin
,即可進入 Hexo admin 介面。
在 Posts 頁籤中,可以看到文章列表以及每篇文章的內容。
這裡也可以點選 New Post 來新增文章。
如果需要編輯某篇文章,只需點選該文章,然後按下編輯文章按鈕即可。
進入文章編輯介面後,會看到如下圖所示的內容,基本上是將前面所說明的架構UI化,呈現在畫面上,因此這部分不再贅述。
比較特別的是,右上角有一個 Publish 或 Unpublish 的切換按鈕,用於管理切換文章的公開或草稿狀態,這個功能會相應地將文章移動到 _post 或 _draft 資料夾中。
另外,點擊右上角的齒輪圖示按鈕後,會顯示其他文章資訊的設置選項。
自言自語543
整體來說,Hexo 的資料夾結構非常簡單。基本上,只需知道文章的儲存位置和靜態文件產生的結果在哪裡。如果深入一點的話,還會前往所使用主題的資料夾,除此之外,幾乎沒有其他太複雜的內容。
在指令方面,我個人常用的只有三個:啟動伺服器、產生靜態文件和清除靜態文件。至於文章的建立和設定,則是直接對檔案進行操作,就像一般手動管理文件一樣。由於管理的是一個個的檔案,整體上也非常直觀,檔案的備份就變得不複雜,且可以隨時移動檔案。目前想到的缺點是,未來如果文章數量增多,某個資料夾下可能會有許多檔案。
使用 Markdown 來撰寫文章也不錯。如果未來需要直接閱讀檔案內容,瀏覽 Markdown 的結果會有助於文章的理解。
在文章撰寫方面,我目前主要使用 Notion。這樣不僅能省去輸入 Markdown 語法的時間,還可以在離開電腦時,若突然有靈感,透過 Notion 的手機 APP 進行撰寫。最後,只需導出檔案並進行一些調整即可。
不過,似乎最大的坑在主題的部分。還有一些想調整的地方,但目前仍在學習和摸索中。不過優先級會擺得比較後面,若有不錯的結果與機會,屆時再做紀錄。