單倉庫設置 hexo 和 Jekyll 在 gh-pages 子頁面下

前言

我仔細想了一想,第一次看到獨立博客這東西就是獨立博客中的翹楚 hexo。大概在這個時候,我才能升起強烈的興趣,於是折騰起了基於 gh-pages 的靜態博客,甚至因此對於 WordPress 這種動態博客產生了恐懼。在這期間,我懷揣著一個會打字比較快、還會手敲網頁、於是欲將自己的網頁作主頁的小學生的夢想,遇見了一個問題:

如何在 GitHub Pages 上傳自己寫的網頁作為首頁,Hexo 博客作為其子頁?

今日即擴展至 Jekyll ,記錄自己的解決方法。

Jekyll

Jekyll 可以和你自己編寫的網頁共存。這意味著:只要你把 Jekyll 博客的內容移動到主倉庫的子目錄下,再在主倉庫直接編寫,一切就完成了。

Hexo

突破口

在上文提及的知乎問題中,有人提供了雙倉庫的解決方案。即:一個倉庫名為uname.github.io用於儲存主頁面,另一倉庫名為blog儲存修改站點配置文件URL一節為子頁面的 hexo 文件。如果不用 CNAME,這實在是有點繞不過彎子的行為。(詳見:Hexo - 用自己的頁面做首頁

如果你將 hexo 目錄的內容直接粘貼到uname.github.io倉庫下的子目錄下,會發現除了引用資源外,內容並無差錯。而經過修改站點配置文件URL一節為子頁面後,引用資源跟著變成了子頁面下的路徑。

從 hexo 的本質來看,它就是生成了一堆靜態文件罷了。這樣一來,解決問題就非常容易了。

解決方案

  1. 修改站點配置文件URL一節對應你期望的子目錄名稱。
  2. 在 hexo 目錄下運行hexo g
  3. 直接複製 hexo 目錄下的生成文件目錄(默認為public)中的內容至uname.github.io倉庫下的子目錄內。

當然,碼力夠強、時間夠多,自然可以由此原理寫個自動腳本。最近有空起來終於寫完了這個咕了許久的小工具:hexo-deploy.sh

注意

這種方案相當於跳過了利用 hexo 工具部署至 GitHub,實際上還是有點麻煩的。但回頭再想想:你同時需要直接用 git 來 push 你的主頁面,那麼在電腦裡留著本地倉庫有什麼不好的呢?

因此,煞費苦心建了一個叫做「blog」的倉庫的各位,刪掉它吧!

演示

倉庫請見:https://github.com/inchei/inchei.github.io/

  1. 1. 前言
  2. 2. Jekyll
  3. 3. Hexo
    1. 3.1. 突破口
    2. 3.2. 解決方案
    3. 3.3. 注意
  4. 4. 演示