從頭教你使用 Hugo 搭建自己的博客

2021-12-27 Go語言中文網
點擊上方藍色「Go語言中文網」關注我們,領全套Go資料,每天學習 Go 語言

本文作者:D瓜哥 

原文連結:https://www.diguage.com/post/building-blog-with-hugo/

一個朋友對D瓜哥的博客感興趣,覺得很好玩。問我怎麼玩,D瓜哥也懶得手把手教了,乾脆寫篇文章來做個說明吧。也許對其他朋友也有所幫助。

潮起潮落

D瓜哥早在 2012年就使用 WordPress 搭建了一個博客: "地瓜哥"博客網—分享技術帶來的喜悅,WordPress 不虧是全世界最流行的開源 CMS 系統,各種插件可以滿足非常對的需求。當年D瓜哥還想研究一下它的原始碼,可惜對 PHP(對,就是那個拍黃片的)無感,沒有堅持下去。

但是,在熟悉了 MarkDown、 Asciidoctor(D瓜哥是 AsciiDoctor 的死忠粉,堅決支持它的發展) 等輕量級標記語言後,愈發覺得 WordPress 太繁瑣:寫作一個小時,排版發布一小時。實在是太浪費時間了。

先嘗試了一下 Antora,之所以選它,是因為它是 AsciiDoctor 的作者發起的項目,對 AsciiDoctor 的支持性非常好。嘗試了一段時間後,發現它更適合寫產品說明書,更適合像阿里雲等這種對外提供產品,需要提供在線產品說明書的情況。不適合做個人博客。

去年,經過多次測試後(主要測試對 AsciiDoctor 的支持性),發現現在D瓜哥用的這個主題對 AsciiDoctor 支持得不錯,隨後下定決心切換到了 Hugo。

Hugo 簡介

關於 Hugo 的介紹,直接轉摘維基百科的介紹了:

Hugo 是一個用 Go 編寫的靜態網站生成器,2013由 Steve Francia 原創,自 v0.14 (2015年) 由 Bjørn Erik Pedersen 主力開發,並由全球各地的開發者和用戶提交貢獻。Hugo 以 Apache License 2.0 許可的開放原始碼項目。

Hugo 一般只需幾秒鐘就能生成一個網站(每頁少於 1 毫秒),被稱為「世界上最快的網站構建框架」,也使 Hugo 大受歡迎,成為最熱門的靜態網站生成器之一,被廣泛採用。例如,2015年7月,Netlify 推出專為 Hugo 而設的網站託管服務,而2017年,Smashing Magazine 推出重新設計的官方網站,從原來的 WordPress 遷移到基於 Hugo 的 JAMstack 解決方案。

— https://zh.wikipedia.org/wiki/Hugo_(軟體)

Hugo 確實非常快,Kubernetes 的官網以及文檔就是使用 Hugo 生成的,那麼龐大的文檔,在本地預覽是,啟動伺服器也非常快。

D瓜哥在查資料時,遇到從 Hexo 切換到 Hugo 的案例,主要原因就是 Hugo 的速度驚人。我們就直接上 Hugo 了。

安裝

關於安裝,直接使用 Hugo 的官方文檔可以參考 Install Hugo,這裡做個概要翻譯:

Mac

在 Mac 下安裝 Hugo 非常簡單,使用 Homebrew 只需要下面這一條命令即可:

brew install hugo

Tip

不了解 Homebrew 的,可以點擊上面的連結,自行了解。Linux

Linux 也支持 Homebrew 了,可喜可賀,上面的命令可以復用了:

brew install hugo

Windows

Windows 安裝,可以使用 Chocolatey - The package manager for Windows,也非常簡單,一條命令:

choco install hugo -confirm

// 如果需要支持 Sass/SCSS,可以使用擴展版
choco install hugo-extended -confirm

創建網站

安裝完成後,就會有一條命令行工具 hugo,後續操作大部分都需要這條命令參與。

新建站點

新建站點非常簡單,也是一條命令行:

hugo new site diguage.com # diguage.com 這個名字可以隨意取,它其實就是一個文件夾名。

上述命令會生成一個名為 diguage.com 的文件夾,下面對文件夾結構做個說明:

$ tree diguage.com
diguage.com
├── archetypes
│   └── default.md
├── config.toml # 配置文件
├── content # 以後的文章就放在這個目錄下
├── data
├── layouts
├── static # 這裡存放靜態資源文件,比如 CSS、JS 以及圖片
└── themes # 這裡存放主題

新建的站點,還沒有加入 Git 版本管理,進入到這個目錄下,執行一下如下命令,完成 Git Repo 的初始化:

git init . # 這步做不做都可以,但是推薦將博客放在 GitHub 或者 Gitee 上,更安全

新建站點後,我們開始添加主題。

添加主題

在 Hugo 的官網上 Hugo Themes 有非常非常多的主題,可以根據自己的喜好選擇一個主題。

Hugo Theme Jane 是D瓜哥比較中意的一款主題,而且是由國人開發的,對中文支持也非常好。這裡就選它作為示例來演示。

每個主題頁面都有按照介紹,直接按照安裝介紹來操作就好。

git clone https://github.com/xianmin/hugo-theme-jane.git --depth=1 themes/jane

克隆完成後,使用如下命令完成配置:

# 將示例內容拷貝到新建站點中
cp -r themes/jane/exampleSite/content ./

# 將默認配置拷貝到新建站點的配置中
cp themes/jane/exampleSite/config.toml ./

然後啟動預覽:

hugo server

默認是 1313 埠號,在瀏覽器中直接訪問 http://localhost:1314/ 就可以訪問到新建的博客了。

根據自己的需要,修改根目錄下的 config.toml 文件,來修改自己站點的配置。

附加工具推薦輕量級標記語言

使用 Hugo 搭配輕量級標記語言才是絕配!輕量級標記語言在增加稍許複雜性的情況下,可以大大提高文檔的美觀性和可讀性。所以,可樂而不為?

這裡,推薦兩款輕量級標記語言。

AsciiDoctor

首先,推薦的是 Asciidoctor。本網站的所有文檔都是使用 AsciiDoctor 格式來書寫的。

Asciidoctor 是一套處理 AsciiDoc 的完整工具鏈。同時,還提供了非常完善的文檔。這樣,幾乎可以一站式解決常見問題,而不用找各種插件來搭積木。

AsciiDoctor 在比 MarkDown 複雜度上增加了一點點,但是功能卻強大好多好多倍!如果說 MarkDown 是出版界的小學生,那麼 AsciiDoctor 就是出版界的大學畢業生。(在 GitHub 上讀到的一句話,原文找不到了。)O』Reilly 就基於 AsciiDoctor 開發了在線圖書編輯系統。

常用的文檔有這麼幾個:

AsciiDoc Syntax Quick Reference — 這是一個入門文檔。常見的功能基本都可以找到說明介紹。如果想玩高級功能,可以去下面文檔查找。

Asciidoctor User Manual — 這是 AsciiDoctor 的完整文檔,五花八門的功能介紹都可以找到。找不到可以去 GitHub 上提 Issue,如果用英文,一般一天之內就會有人回復的。

AsciiDoctor Diagram — 需要圖表支持的,這裡提供了豐富的圖表集成。

AsciiDoctor PDF — 想要直接轉化成 PDF,沒問題,這個工具就能幫你搞定!

MarkDown

坦白講,MarkDown 是D瓜哥最早接觸的輕量級標記語言。也是目前使用最廣泛的輕量級標記語言。GitHub,Gitlab 以及很多工具都有完善地支持!

MarkDown 也是 Hugo 原生支持的標記語言,渲染速度非常快。同時,還支持很多簡碼(shortcode)。如果第一次接觸,為了省去不必要的麻煩,建議從 MarkDown 玩起。

但是,MarkDown 美中不足的是,它沒有標準化,有非常多的方言和擴展。這裡給幾個比較

Markdown Guide: Basic Syntax — 這是一個可讀性非常好的 MarkDown 教程,可以從這裡開始。

Markdown Tutorial — 這是一個交互教程。

GitHub Flavored Markdown Spec — GitHub 改進過的 MarkDown,玩 GitHub 必備。

Syntax | Mmark: powerful markdown parser — 這是 hugo 支持的 MarkDown 格式。做個作為備查,或者你想玩高級玩法的時候的一個參考資料。

上面給的文檔很多,找一個自己感興趣的,通讀下來,各種語法實驗一遍,學會就行。不必全部通讀。

主題推薦

Hugo 的主題特別特別多,這裡推薦兩款私以為比較漂亮的主題:

Jane

Hugo Theme Jane 應該是國人開發的一個主題。對中文支持得比較好,整體頁面也簡潔大方,乾淨利落。並且響應性和移動友好性也都特別棒。

Figure 1. Hugo Theme Jane

Mainroad

Hugo Themes Mainroad 是我目前正在使用的主題,通過添加 CSS 可以很好的支持 AsciiDoctor。美中不足的是,它原生不支持「歸檔」頁面。等有機會,D瓜哥把自己改造後的主題發布出來。

Figure 2. Hugo Theme Mainroad

VS Code 插件

hugofy 是 VS Code 下的一個插件,可以方便我們創建文章,非常方便,推薦。

自動發布

D瓜哥推薦把博客的 Repo 放在 GitHub 上,使用 GitHub Action 可以非常方便地發布到 GitHub Pages,簡直爽得不要不要的。

Figure 3. Hugo to GH Pages

Hugo to GH Pages 就是這樣一個 GitHub Action 插件。大家可以嘗試一下。

大家還有什麼問題,歡迎留言討論……

參考資料

Hugo to GH Pages · Actions · GitHub Marketplace

推薦閱讀

站長 polarisxu

自己的原創文章

不限於 Go 技術

職場和創業經驗

Go語言中文網

每天為你

分享 Go 知識

Go愛好者值得關注

相關焦點

  • 從零開始搭建個人博客(一)- 使用hugo搭建個人博客
    >>> brew install hugo>>> hugo versionhugo v0.89.4+extended darwin/arm64 BuildDate=unknown創建站點創建一個站點 left-pocket-test, 並進入到站點根目錄。
  • 技巧| Blogdown+Hugo+Netlify搭建個人博客
    作為一個醫學生,每每在網絡上瀏覽到各路程序猿大神們自己搭建的個人博客,心中都無比羨慕。最近看到謝益輝、王詩翔、莊閃閃等人介紹的用R語言來搭建個人博客,心中羨慕之情如滔滔江水無法阻擋。於是自己動手,在奮鬥了2天1夜之後,終於把我的個人博客阿狸的Blog的雛形搭建出來了,途中踩坑數個,在這裡做個記錄。也許有人要問,搭建個博客要這麼久麼。
  • 我要用這個教程搭建個自己的個人博客
    你是不是特別想創建一個自己的私人博客?以及為什麼要使用 blogdown 搭建博客?難度是不是很大,和其他搭建博客而言有什麼優點?在小編使用過一段時間後,個人認為 blogdown 搭建博客的優勢在於,將 Rmarkdown 與 hugo 相結合,再加上 github 和一個可以部署的網站。你可以輕鬆的將一篇篇 Rmarkdown 的文章自動上傳上去。而 Rmarkdown 的優勢在於,你的代碼結果都可以輕鬆呈現。而不是「複製粘貼」結果!
  • Hugo搭建個人靜態Blog(保姆級)教程
    Hugo搭建個人靜態Blog(保姆級)教程(MacOS系統)上篇雄文介紹的Hexo搭建blog還是太繁瑣?
  • 使用Hugo,幾步搭建你喜歡的站點樣式!
    Hugo是一個用Go編寫的靜態站點生成器,它具有豐富的主題資源和較好的生成速度。
  • 開發人員必須有自己技術博客,使用Hugo和Firebase創建免費博客
    寫作是每個軟體開發人員都應培養的一項關鍵技能,而寫作可以從創建自己技術博客開始,讓我們看一下如何使用Hugo和Firebase免費地部署自己的博客,當然你可以使用GitHub,因為GitHub建立技術博客網站太常見,我們就不再進行討論,或許你還可以在其他免費平臺建立。
  • 使用Hugo框架搭建博客的過程 - 前期準備
    前言這篇教程介紹了如何搭建這樣效果的博客。
  • 手把手搭建個人博客(圖文教程)
    首先我們談一談搭建個人博客必要性,個人認為在學習過程中,被動接受知識對你的提高是輕微的。可見搭建個人博客是非常有必要的,很多讀者很早就要求我發一篇搭建個人博客的文章,由於個人時間願意本來想直接轉載,但是在自己實際操作中遇到很多坑,浪費不少時間,都是把主要步驟給出且時間久遠,沒有詳細的圖文配合。
  • 零成本搭建現代博客之SEO優化篇
    這個系列不少的東西需要你科學上網才能訪問,也就是你需要一把梯子[2]。如果你對SEO並不了解,請先看這篇《什麼是SEO》[3]。在搭建好我們的博客後,一頓優化猛如虎,一看訪客還為零。如何能讓搜尋引擎給我們帶來免費而源源不斷的SEO流量?如何給新建的站做基本的SEO?如何分析老站的流量現狀通過一些優化方法來提高SEO流量?
  • 使用Hexo+Github搭建個人博客網站
    曾幾何時,筆者也幻想過寫個項目來搭建屬於自己的個人博客
  • Hugo 博客中文指南(基礎教程)
    創建站點在當前目錄打開 CMD 執行以下命令,創建名為 mysite 的站點:hugo new site mysite在執行完命令後進入 mysite 目錄,你會看到包含以下內容的目錄:安裝主題從 Github 上下載一款主題,解壓到 theme 目錄下:通過命令行的方式使用主題:hugo -t 主題目錄名通過在 config.toml 配置使用:theme
  • 【Golang】使用Golang編寫Hugo發布器
    博主的博客Garfield-加菲的博客就是通過Hugo自動生成的靜態網站,首先強調一點,我喜歡Hugo,它使我能夠專注於markdown的編寫,其他一切事情都交給Hugo,這也符合我懶的特點。1.為什麼要寫一個 Hugo 發布器事情的起因我最初使用的是maupassant主題作為博客網站的主題,但是偶然間發現了其在移動端的適配效果不太理想,然後就想著去找一款能夠完美適配行動裝置的主題,最後通過配置伺服器去判斷用戶使用的設備,不同端的設備返回給用戶不同端的頁面。
  • 如何快速搭建屬於自己的個人博客網站?
    我給他們的建議就是,首先要搭建一個屬於自己的博客網站。這個博客網站就相當於你在網際網路上的鋪面,試想沒有鋪面何來的人流?然而還是有不少人心中還是充滿疑慮,「我不懂編程,也不會寫代碼,可以搭建博客網站嗎?」答案自然是肯定的。那麼,我們該如何快速搭建屬於自己的個人博客網站呢?
  • Github + Hexo 搭建博客
    最近突然想起自己之前還用 Github + Hexo 搭建過自己的博客,找到源碼一看還是 2017
  • 途牛原創 如何使用 hexo+github 搭建個人博客
    如果你不想要像新浪、csdn 這類樣式醜、頁面內容雜的博客網站,或者不想在移植、遷移上浪費精力,又或者不想付出多餘的銀子買VPS,那麼 GitHub Pages 是不錯的選擇。GitHub Pages 有以下幾個優點:輕量級的博客系統,沒有麻煩的配置免費空間,享受 Git 版本管理功能使用標記語言,比如 Markdown無需自己搭建伺服器可以綁定自己的域名當然他也有缺點:搭配模板系統,相當於靜態頁發布,每運行生成一次都必須遍歷全部的文本文件,網站越大,生成時間越長
  • 如何搭建個人獨立博客網站?
    有網友留言想看看,如何搭建博客,今天他來了(liao)。這是一個搭建WordPress博客網站的教程,內容會很細順便科普一下相關概念,小白也不用怕,相信我,你肯定聽得懂、做得好。為什麼搭建博客?想先說一下這個古老的東西「博客」,有人說博客已經過時了,現在大多數人都用手機看朋友圈、微博等。
  • 個人博客|第一章|手把手教你搭建、上線個人博客
    」前言Hello,我是淡漠,今天帶大家一起搭建個人博客。個人博客一直都是非常受歡迎的個人項目,個人博客分靜態和動態兩種,淡漠個人比較青睞靜態博客,靜態不需要管理後端,相比動態博客,靜態博客可以不需要花一分錢,開發成本要低一些,畢竟作為學生黨,買伺服器放一個博客網站有點浪費,也可以把精力集中於寫博客,而不是開發博客。
  • Hexo+Github/Gitee 搭建個人博客
    個人博客的好處是你可以隨便折騰,沒有太多限制。搭建個人博客的框架有很多,比如wordpress、Hexo、Vuepress、Jekyll、Django等,Hexo博客簡潔高效,配置簡單,文章可以使用markdown語法編寫,下面介紹 hexo博客搭建步驟。
  • 搭建個人博客,我遇到哪些棘手的問題?
    最後可能是一些對你不太重要的需求點,如文本編輯器、是否是開源框架、所使用的語言等。下面是根據小鹿的不同需求大小的一個優先級的排列順序。1.2 穩定性首先,小鹿搭建博客是打算長期寫下去,可能是以後十年,二十年甚至三十年不等,所以對博客框架的穩定性是俺的第一個要求。
  • 零代碼教你用 GitHub 搭建個人博客!
    公眾號關注 「GitHubDaily」設為 「星標」,每天帶你逛