Hugo + Cloudflare Pages 架站全紀錄
這篇文章是
只會用 Windows 的架站小白第一次把 Hugo 靜態網站部署上線的過程。
前情提要
在上週的文章提到我開始做個人網站。後來發現如果不使用靜態網站生成器,每次版面變動都需要手動修改所有文章,考慮到未來網站擴展,並不是很實際的方案。所以繞了一大圈,還是回到了 Hugo(我在搬到Bear Blog 的第一篇文章曾說我的終極目標是學習用 Hugo 做一個個人網站,經過 4 個月總算伏筆回收)。
在 ChatGPT 把我的半成品改爆無數次後,我投靠了 Claude,終於做出一個可以在本機跑起來的 Hugo 專案。接下來,我要把這個專案部署到 Cloudflare Pages,然後連接我在 Cloudflare 的網域。

一、把 Hugo 專案推到 GitHub
在此之前,我還沒有 GitHub 帳號,所以得先註冊一個。(題外話,我覺得註冊帳號時的拼圖驗證很難,我試了 3 次才好不容易成功。到底誰才是機器人!)
1-1. 在 GitHub 建立新 repo
- 登入 GitHub,點右上角「+」→ New repository
- 給新 repo 一個名稱
- 選擇 Public 或 Private,然後 Create repository
1-2. 推上 GitHub
在 Windows PowerShell 執行:
cd 我的路徑\專案資料夾
git init
git add .
git commit -m "init"
git branch -M main
git remote add origin https://github.com/我的帳號/repo名稱.git
git push -u origin main
結果執行後出現
fatal: unable to auto-detect email address
這是我第一個踩到的坑。原因是我還沒有設定 Git 身份,Git 不知道這個 commit 是誰做的,所以拒絕執行。
所以我要先執行這兩行:
git config --global user.email "我的email@gmail.com" #email 要跟 GitHub 帳號一致
git config --global user.name "我的名字"
設定身份後,再執行一次剛才「git init ...」那一整段,瀏覽器會跳出 GitHub 登入視窗,用帳號密碼登入後,會問要不要授權 Git Credential Manager,點 Authorize 確認。接著會收到一封 GitHub 寄來的安全通知 e-mail。授權完成後回到 PowerShell,就會看到執行完成了。
二、在 Cloudflare Pages 建立專案
登入 Cloudflare,在左側選單找到組建> 運算> Workers 和 Pages
在這裡我又踩了一個坑。點進「建立應用程式」,預設是建立 Workers,一開始我沒注意就點下去,結果後面的設定頁面選項都很奇怪,才發現選錯了。底下有一排很小的字「想要部署 Pages? 開始使用」,要點這個才會進入部署 Pages 的畫面。

2-1. 連接 GitHub
- 選「匯入現有 Git 存放庫」,授權 GitHub
- 點「選擇存放庫」選擇 repo
2-2. 填寫建置設定

選好 repo 之後,填入以下設定:
| 欄位 | 值 |
|---|---|
| Framework 預設 | Hugo |
| 組建命令 | hugo --minify |
| 組建輸出目錄 | public |
據 AI 說,Cloudflare Pages 預設的組建命令是 hugo,但建議改成 hugo --minify 讓輸出檔案更小、載入更快。改完之後介面會跳出「重設到推薦設定」的提示,但在這裡我保持 hugo --minify。
2-3. 加上 HUGO_VERSION 環境變數
接著在頁面下方找到環境變數(進階),新增一筆:
| 變數名稱 | 值 |
|---|---|
| HUGO_VERSION | 本機的 Hugo 版本號 (在 PowerShell 輸入 hugo version 查,如:v0.153.0) |
據 AI 說,Cloudflare 預設使用的 Hugo 版本很舊,可能會導致建置失敗或樣式跑版。指定版本號可以確保雲端和本機的行為一致。
2-4. 部署
設定完畢後點部署,就會得到一個 xxx.pages.dev 的網址,網站就正式上線了!
三、設定自訂網域
我在 Cloudflare 有自己的網域,接下來我想把這個 xxx.pages.dev 的網址,換成我自己的子網域。
3-1. 進入 Pages 專案的自訂網域設定
回到 Pages 專案,點上方的「自訂網域」。
3-2. 輸入網域
輸入想要的網域,我把它取名為 icons.shuyuart.com,然後按確認。
接著會出現這樣的畫面:
確認新的 DNS 記錄 Cloudflare 會新增這些 DNS 記錄,以啟動專案網站的 icons.shuyuart.com
不需要修改任何東西,直接點「啟用網域」即可。
因為網域本身就在 Cloudflare 管理,DNS 設定和 SSL 憑證都是全自動的,大約等一兩分鐘就能用 icons.shuyuart.com 打開網站了。
四、之後如何更新網站
在 PowerShell 執行:
git add .
git commit -m "說明這次改了什麼"
git push
Cloudflare 會自動偵測到新的 commit 並重新部署。
五、新增 .gitignore
後來才學到,並不需要把 Hugo 所有的資料夾都推上 GitHub,所以接著我要來新增一個 .gitignore
在 Hugo 專案根目錄(也就是有 hugo.toml 的地方),新增一個檔案,取名為 .gitignore(開頭有一個點,不可以刪掉)。
把以下內容複製貼在.gitignore 裡面:
public/ #Hugo 預設產生的資料夾
resources/
hugo_stats.json
.DS_Store #作業系統產生的雜物
Thumbs.db
.vscode/ #編輯器的設定檔(選配)
.idea/
但在這之前,我已經把 public/ 推上 GitHub,就算現在補加 .gitignore,Git 還是會繼續追蹤它。
所以我需要叫 Git「放手」,執行指令:
cd 我的路徑\專案資料夾
git rm -rf --cached public
執行完後,再重新推一次:
git add .
git commit -m "chore: 從 Git 中移除 public 並新增 gitignore"
git push
如此如此這般這般,我的狡兔三窟終於完工了!不過目前只有房子外觀蓋好了,屋裡還空蕩蕩的,之後會慢慢新增圖片上去。
現在我有:
這個部落格

我的個人首頁 Shuyu Art

展示作品的地方。未來如果有新的興趣領域,就能在這個頁面繼續擴充。我的 Icon 圖庫 Shuyu's Pixel Art Icons

想做成像 irasutoya 那樣的免費圖庫,但還在研究授權條款該怎麼寫才好。
主軸還是部落格,在個人首頁和圖庫我要當米菲兔,最高品質靜悄悄。
(我本來想說某無嘴 KT 貓,可是 KT 貓其實會講話,而且講話還滿毒舌的。)
← Previous | →
留言
關於網站改進的建議,還請不吝賜教,讓我納入下次更新時的參考。
這個留言板需要手動審核,留言不會馬上顯示。過幾天再來看看它吧
你也可以寫信給我 blog@shuyulin1127.com