Skip to main content

Hugo 部落格之旅 - 第一站 : 建置靜態網站

·336 words·2 mins
Table of Contents

去年在工作上學習到很多技術,但一直沒有好好整理,在朋友的推薦下決定開始寫部落格,記錄一下學習心得。

說到部落格就會想到 Blogger, Medium, WordPress 等平台, 但身為一個工程師感覺就是要自己架設部落格,只是建置網站的成本很高,伺服器貴貴 QQ

就找了一下看有甚麼方式可以花少少的錢錢就建置部落格,看了幾款開源的部落格專案後決定使用 Hugo + GitHub Page 來進行建置。
所以我們的部落格之旅的第一站就是如何用 hugo 建置靜態網站

為什麼選擇 Hugo
#

在眾多靜態網站生成器中,我選擇 Hugo 的原因如下:

  1. 它是個靜態頁面產生器,目前市面上有許多架設靜態頁面的服務都是免費的,且 SEO 對靜態網站較為友善
  2. Hugo 是用 Golang 撰寫的,剛好符合我的學習規劃
  3. 身邊有朋友在使用 Hugo,遇到問題可以互相討論

Hugo 簡介
#

hugo-logo.png

Hugo 是一個強大的靜態網站生成器,可以將 Markdown 檔案轉換成純靜態 HTML。 截至 2025/01/21,在 GitHub 上已有 77.4k 星星,並支援 macOS、Linux、Windows 等各大平台。

Hugo 最大的特點就是建置速度快,官方自豪地宣稱:

The world’s fastest framework for building websites

安裝 hugo
#

由於工作時是使用 mac,所以下面介紹 mac 的安裝方式。
官方有提供個平台多種安裝方式,可以去官網看看。

前置
#

理論上如果沒有要自己 build,或是使用 hugo 的模組功能只要下載 git 就好。

Homebrew
#

brew install hugo

安裝完後可以使用以下指令查看有無成功。

## 查看版本
hugo version 

## 應該會看到一下回應
hugo v0.140.2+extended+withdeploy darwin/arm64 BuildDate=2024-12-30T15:01:53Z VendorInfo=brew

簡單指令介紹
#

基本上要會用 hugo 只需要記四個指令就可以了。

## 創建網站
hugo new site [proj_name]

## 建立新文章
hugo new posts/[my-post].md

## 開啟 local 伺服器, -D 顯示草稿
hugo server
hugo server -D  

## 產生靜態頁面檔案
hugo

簡單目錄介紹
#

這邊簡單介紹一下目錄,建立新專案後目錄如下。

hugo-directory-structure.png
基本上初學只要先知道幾個目錄就好:

  • assets:放置靜態資源的地方 (images, css, js)。
  • content:放置 md 檔的地方。
  • themes:放置主題的地方。
  • hugo.toml:設定檔。
  • public: 靜態檔產生的目錄,一開始不會有。

開始撰寫部落格
#

知道以上基本知識後就可以來撰寫部落格瞜。

首先當然是先挑選一個順眼的主題
#

翻了一輪官網的主題後,挑了這個 blowfish 主題,
在眾多看起來蠻正式的部落格主題中出現一隻河豚,當然選他XD

建置專案並匯入主題
#

# 建置部落格專案
hugo new site new_proj

# git 初始化
git init

# 把 blowfish 的 Git 專案(子模組)加到你的專案裡
git submodule add -b main https://github.com/nunocoracao/blowfish.git themes/blowfish

# 刪除原本的設定檔
rm hugo.toml

# 把主題的設定目錄複製出來
cp -r themes/blowfish/config/ config/

接下來就可以來設定基本資訊
#

這邊先貼一下官方的教學

  • 修改 config/_default/hugo.toml
    # theme 原本是註解的,拿掉#即可
    theme = "blowfish"
    
    baseURL = "https://your_domain.com/"
    languageCode = "en"
    
  • 修改 config/_default/languages.en.toml
    # 填寫 params.author 區塊,記得要把#拿掉
    # image 圖像應放在 assets 中 (預設為河豚)
    [params.author]
        name = "小P"
        email = "[email protected]"
        image = "img/blowfish_logo.png"
        imageQuality = 96
        headline = "I'm only human"
    

設定完後就可以先開啟 local 伺服器來看看。

# hugo local server 預設 port 為 1313
hugo server

hugo-init.png

撰寫第一篇文章
#

由於靜態檔案都會產生在 public 目錄。
在新增文章之前可以先新增 .gitignore,將 public 目錄排除。

#.gitignore
/public

新增第一個 md 檔,他會放置在 content 目錄底下。

hugo new posts/first-post.md

每篇文章最上面都會有 Front matter,而文章內容是寫在下方。
如下

+++
date = '2025-02-17T01:59:30+08:00'
draft = true
title = 'First Post'
+++

## 歡迎來到我的 Hugo 網站 
這是我的第一篇 Hugo 文章,我正在學習如何使用 Hugo 來建立靜態網站。

Front matter 用來設定文章的 標題、日期、分類、標籤 等資訊。

開啟伺服器來看看
#

如果文章還是草稿模式 (draft = true) 記得開啟伺服器時要加 -D。
網址為:http://localhost:1313/posts/first-post

hugo server -D

hugo-server-draft.png

其他設定
#

如果有在網站點過一輪會發現我們目前無法從 homepage 找到我們剛剛的文章,因此建議開啟兩個設定。

  • 開啟 menus
    # config/_default/menus.en.toml 
    # 打開註解即可
    [[main]]
    name = "Blog"
    pageRef = "posts"
    weight = 10
    
  • 最近文章顯示首頁
    # config/_default/params.toml
    [homepage]
    showRecent = true
    cardView = true
    

設定完後畫面如下:

hugo-success.png

看到這個地方就代表我們的靜態網站已經建置完成了!不過這只是開始而已,下一站將介紹如何把網站部署到 GitHub Pages,以及如何設定自己的網域。

小P
Author
小P