很早之前就有想法,搭建一個我的的博客。沒有實現的緣由:一方面我的的服務器不太安全掉線,欠費,維護起來麻煩,另外一方面,文章編輯發佈起來也不方便。css
後來瞭解到 github 提供了博客的功能,也一直沒有實踐。也鑑於上次文章被刪,我也就開始實踐了起來,有一個備份總好於無
。html
這個是我第一個糾結的地方,我當時把選擇集中在三個選項裏面:Jekyll
,Hexo
,Hugo
。固然是必定要支持markdown
。node
針對選擇誰這個問題,我也是在網上查了大量的文章:git
Ruby
語言,三個裏面最悠久,網上有關的問題,解決辦法也比較多。官網主題較多;我的主機搭建的話,這個仍是比較好,插件比較多。Nodejs
生成的。Hexo有一個相對較大的社區,但大多數是非英語人士(來自中國)。。。Go
構建的靜態站點生成器。它被宣傳爲「世界上最快的網站構建框架」。屬於後起之秀,主題較少。當時,我糾結了半天。最終決定使用Hugo
,主要緣由有下:github
exe
程序,就能夠生成靜態文件了。這個是我選擇他的最關鍵緣由。最終,我也記不清當時是怎麼搜到這個 hugo-theme-jane 主題的,印象中好像是一通亂搜。。。windows
其實這方面網上的文章不少,我這裏就不作全面介紹了。推薦參考 中文官方文檔安全
config.toml
文件。至關於該站點的hugo配置文件,涉及到博客標題,分頁,做者聲明等等。shortcodes
自定義標籤,新增themes/jane/layouts/shortcodes/collapsible.html
,相似於博客園的代碼摺疊
標籤。<details> <summary style="background-color:#f5f5f5;border:1px solid #ccc;padding:5px;"> {{ with .Get 0}}{{.}}{{else}}click to expand{{ end }} </summary> {{.Inner}} </details>
{{% collapsible "hugo代碼摺疊代碼" %}} 中間爲被摺疊的代碼 {{% /collapsible %}}
jane
是由 nodejs 生成的,若是改了主題的話,須要用node從新生成一下。我偷懶直接手動修改node生成後的文件, themes/jane/static/dist/jane.min.css themes/jane/static/dist/jane.min.css.map
static/images
下面,在文章中使用路徑,不包含static,例如![show 404 page](/images/testjpg.jpg)
public
目錄下,建議不要修改;須要修改的話,改模板文件。強烈建議把一些自定義的功能,或者樣式。按照這樣的方式修改,不要去改themesmarkdown
在配置文件config.toml
中,填寫上這兩個配置hexo
# Link custom CSS and JS assets # (relative to /static/css and /static/js respectively) customCSS = [] # if ['custom.css'], load '/static/css/custom.css' file customJS = [] # if ['custom.js'], load '/static/js/custom.js' file
注意,這個是對全站點生效的,要加上必要的選擇器
。
{帳號名稱}.github.io
和一個根目錄下的 index.html
文件hugo-theme-jane :是直接fork的主題,有修改需求;強烈建議把修改放到/static/css/目錄下; mrbenwang.github.io-hugo :這個是有關於 hugo 的倉庫; mrbenwang.github.io :最終的展現靜態頁面,是最重要的。github 的博客主要是從這裏面來讀取的。
public
和 themes/jane
都分別作了不一樣的git目標;.gitmodules
文件內容以下[submodule "public"] path = public url = https://github.com/MrBenWang/mrbenwang.github.io.git [submodule "themes/jane"] path = themes/jane url = https://github.com/MrBenWang/hugo-theme-jane.git
其所在的目錄內
提交,提交前必定要記得先git checkout master
。參考連接這裏的坑在於,默認 git submodule update 並不會將 submodule 切到任何 branch,因此,默認下 submodule 的 HEAD 是處於遊離狀態的 (‘detached HEAD’ state)。因此在修改前,記得必定要用 git checkout master 將當前的 submodule 分支切換到 master,而後才能作修改和提交。
若是你不慎忘記切換到 master 分支,又作了提交,能夠用 cherry-pick 命令挽救。具體作法以下: