之前在博客園、簡書、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中插入

即可在hexo generate時正確生成插入圖片。比如:
_posts
|- post1.md
|_ post1
|- pic1.png
在md文件中插入圖片時只需寫

即可。首次配置完了需要執行一次清除操作,再生成頁面:
$ hexo clean
$ hexo generate
$ hexo server
如果沒做清除,直接生成頁面,在我這里會出現路徑錯誤的情況。
