使用 markdown 搭配 Hugo 建立網站

最近大學時的學長準備到師大去當老師,左思又右想不知道該送什麼慶賀,後來想起過去學長曾經想要使用 Google Sites 建立個人形象網站,但一直無法成功被 google search engine 建立索引,所以就興起為學長建立個人網站做為賀禮了表個人的祝賀之意

基本環境說明

  1. macOS Ventura 13.4
  2. Hugo v0.115.3
  3. git 2.41.0

建立步驟

  1. 安裝必需軟體

  2. 設定 Hugo 網站專案

    • 使用 hugo cli 建立網路專案

      會以專案名稱建立對應資料夾與相關的 hugo 設定檔

      • 語法

        hugo new site {website_project_name}
        
      • 範例

        yowkotsai.github.io 做為專案名稱 (這是為之後部署至 GitHub Pages 做準備)

        hugo new site yowkotsai.github.io
        
    • 建立 git repo 來進行版控

      • 語法

        cd {{folder}} && git init
        
      • 範例

        cd yowkotsai.github.io && git init
        
    • 將目標的 hugo theme 以 git submodule 加入 themes 資料夾中

      FixIt Theme | Hugo 為例

      • 語法

        git submodule add {your_theme_git} themes/{theme_name}
        
      • 範例

        git submodule add [email protected]:hugo-fixit/FixIt.git themes/fixit
        
    • 設定 theme

      • 語法

        echo "theme = '{theme name}'" >> hugo.toml
        
      • 範例

        echo "theme = 'fixit'" >> hugo.toml
        
    • 測試

      預設使用 http://localhost:1313/

      hugo server
      

      2result

心得

我在引用 theme 時發現個奇怪的點,以這個 theme 為例:相關的 config 是在 theme 的 folder 中,我嘗試將 config 移至根目錄並無法成功套用,這樣一來就是每個 website 需要自行 fork 一份 theme 才能做修改,這樣日後的更新或是與原本 repo 的 sync 就變得複雜,感覺不是很便利,我怎麼記得以前除非要自行客製,不然 config 可以放在外層?!

我試了一下,最後我決定這麼做

  1. 將 theme 的 config 改為 bak

    避免設定互相 overwrite

    mv themes/fixit/config.toml themes/fixit/config.toml.bak
    
  2. 將 theme config 內容移至 hugo.toml 中

    cat themes/fixit/config.toml.bak >> hugo.toml
    

我有找到這個網站: https://docs.gethugothemes.com/guide/ ,它的處理方式是每個 theme 中都有 example site,將其中的 config copy 到外層就可以正常使用,但缺點是這個網站需要安裝的基礎軟體較多(Hugo、go、Nodejs)、多數的 theme 需要額外付費、theme 的文件不一定齊全

參考資訊

  1. Hugo Quick start
  2. FixIt Theme | Hugo
  3. Hugo 官方文件
  4. Git 官方文件