使用hexo搭建博客並上傳GitHub


之前在博客園、簡書、CSDN等地兒都開過博,一篇文章寫好了,我希望能在幾個平台可以同步發布,可是操作起來成本不低。幾個平台下的富文本編輯器比較起來還是博客園更順手,看着更舒服,尤其是代碼塊的操作靈活、准確。而CSDN對代碼塊內的文字加粗、修改字色后就會出現html文無法解析的情況,混雜着代碼和html文本實在太難看了,后來我知道原來是Markdown的代碼塊規則限制。而且CSDN剛剛才取消了提交文章要審核通過才能發布的限制,審核沒有完成之前,連自己都看不到,且不能修改,這讓我一度放棄CSDN平台。如果是寫普通的文章寫作體驗最好的是簡書,大氣、簡潔。但簡書更適合一般的寫作,比較技術化的中間摻雜大量代碼的支持還不夠好。

作為一名程序員,應該到GitHub上開博,這里是程序員的聖城。花了兩天時間研究了一下,發現還蠻簡單的,而且md格式也被博客園、簡書、CSDN所支持,寫完一份應該比較容易復制到這三個平台。我喜歡在本地編輯markdown文件,使用sublime 及其插件Markdown Editing 和 OmniMarkupPreviewer。完成后底稿、資源文件都悉數保存到GitHub,日后查找、修改都很容易。

我用hexo作為靜態頁面生成器,操作過程遇到不少問題,搞定之后留一份操作記錄吧。以后就把[http://palanceli.github.io/blog/]作為我的首發平台了;)

安裝環境

  • 安裝node.js,去官網下載安裝即可,我安裝的是最新穩定版。

  • 安裝Hexo
    sudo npm install -g hexo

  • 創建hexo目錄並初始化

$ mkdir hexo
$ cd hexo
$ hexo init
  • 然后就可以生成網站,啟動服務了:
$ hexo clean
$ hexo generate
$ hexo server
  • hexo文件夾
    先來看一下hexo文件夾下的內容:
hexo/
  |- node_modules/  # hexo需要的模塊,不需要上傳GitHub
  |- themes/        # 主題文件,需要上傳GitHub的dev分支
  |- sources/       # 博文md文件,需要上傳GitHub的dev分支
  |- public/        # 生成的靜態頁面,由hexo deploy自動上傳到gh-page分支
  |- package.json   # 記錄hexo需要的包信息,不需要上傳GitHub
  |- _config.yml    # 全局配置文件,需要上傳GitHub的dev分支
  |- .gitignore     # hexo生成默認的.gitignore,它已經配置好了不需要上傳的hexo文件

關聯GitHub

首次先創建GitHub工程blog,並且使用“Launch automatic page generator”生成頁面,它會給該工程創建分支gh-pages。
手動為之創建dev分支,未來工程源碼會放到dev分支下;hexo生成的網站靜態頁面會放到gh-pages分支。

  • 首次創建GitHub工程后操作dev分支代碼

如果是剛創建的GitHub工程,clone dev分支的代碼到本地blog-dev/,然后把前面hexo/文件夾下的內容全部拷貝到blog-dev/,注意包括一個隱藏文件.gitignore。

  • 已存在GitHub工程的恢復
    仍是clone dev分支的代碼到本地blog-dev/,然后把hexo/node_modules/拷貝到blog-dev/
    再試試生成頁面、啟動服務,確保是正常的:
$ hexo clean
$ hexo generate
$ hexo server

網上有介紹把package.json文件同步到GitHub,以后每次恢復時執行

$ npm install hexo
$ npm install
$ npm install hexo-deployer-git --save

可是我在不同的機器上試總是出錯。只好采取笨辦法,每次先hexo init出一個完整文件夾,再把相關文件拷貝到GitHub目錄下。千萬不要先clone 了blog目錄,再在該目錄下執行hexo init,因為init會把.git信息刪掉。

配置自己的_config.yml

按照如下內容修改blog-dev/_config.yml:

title: Palance's Blog   # 標題
subtitle:
description:
author: Palance Li
language: zh-CN         # 語言設置
url: http://palanceli.github.io/blog
root: /blog/

翻到最下面,改成:

deploy:
  type: git
  repository: https://github.com/<自己的github賬號>/blog.git
  branch: gh-pages

主題

這里有大量的主題https://github.com/hexojs/hexo/wiki/Themes
我非常喜歡Maupassant:https://www.haomwei.com/technology/maupassant-hexo.html,
簡潔清晰,而且適配手機、PC各個平台。

  • 安裝方法
    首次在blog-dev/目錄下執行如下命令
$ git clone https://github.com/tufu9441/maupassant-hexo.git themes/maupassant
$ npm install hexo-renderer-jade --save
$ npm install hexo-renderer-sass --save

以后建議把blog-dev/themes/maupassant/.git文件夾刪掉,把maupassant文件夾隨自己的blog-dev上傳到GitHub。
以后clone blog-dev后,執行完前面的安裝操作步驟后記得執行

$ npm install hexo-renderer-jade --save
$ npm install hexo-renderer-sass --save
  • 配置
    在blog-dev/themes/maupassant/_config.yml中根據自己的情況修改,比如:
links:
  - title: 我的博客園
    url: http://www.cnblogs.com/palance/
  - title: 我的CSDN
    url: http://blog.csdn.net/zchongr
  - title: 我的簡書
    url: http://www.jianshu.com/users/5e527164a8c2

在blog-dev/_config.yml中修改:

theme: maupassant

第一次的工作就完成了,可以提交github到blog-dev了。

上傳生成頁面

執行

$ cd blog-dev
$ npm install hexo-deployer-git

以后每次執行完

$ hexo clean
$ hexo generate
$ hexo server

生成了靜態頁面后就可以執行

hexo deploy

完成頁面上傳。

其它

圖片

首先確認_config.yml中有:

post_asset_folder: true

然后在blog-dev/下執行

npm install https://github.com/CodeFalling/hexo-asset-image --save

確保在blog-dev/source/_posts下創建和md文件同名的目錄,在里面放該md需要的圖片,然后在md中插入

![](目錄名/文件名.png)

即可在hexo generate時正確生成插入圖片。比如:

_posts
    |- post1.md
    |_ post1
        |- pic1.png

在md文件中插入圖片時只需寫

![](post1/pic1.png)

即可。首次配置完了需要執行一次清除操作,再生成頁面:

$ hexo clean
$ hexo generate
$ hexo server

如果沒做清除,直接生成頁面,在我這里會出現路徑錯誤的情況。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM