使用hexo在github上搭建自己的博客

最近想写个博客玩一样,就尝试了hexo,使用github.io可以搭建一个自己的博客,把静态文件项目托管到github上,可以写博客,可以使用markdown语法,也可以展示作品.灵活性高.但是有较大的难度.

node,git版本变化日新月异,每段时间都会有不同,而这个小不同可能直接导致搭建失败.这里把我搭建的过程记录下来.如果将来搭建失败,可以参考,下载对应的版本尝试.

我使用的版本(mac系统下:)

1
2
3
node: v0.10.22
git: git version 2.3.2
hexo: 3.1

搭建步骤

安装好node和git,注册好github账号.

注意:用户名一定不能有大写.
想下载最新的git可以尝试这个地址: http://msysgit.github.io/

安装hexo

1
npm install -g hexo

这里常常安装了一半就卡住装不下去了,推荐安装淘宝镜像:

1
npm install -g cnpm --registry=https://registry.npm.taobao.org

创建hexo文件夹

自己找一个喜欢的路径,创建hexo文件夹,例如在 ~\hexo下的.
cmd窗口切换到对应的目录下,然后执行初始化,等待结束

1
hexo init

安装依赖

继续执行,安装好所有的依赖

1
npm install

完成本地安装

继续在项目目录下~\hexo执行一下语句

1
2
3
4
// 生成文件
hexo generate
// 开启服务器
hexo server

然后在打开浏览器 localhost:4000 ,就可以看到,本地已经安装好了.

在github上创建博客仓库

  选择New repository跳转的后如下填写:(其中Repository name的格式是 ‘用户名’.github.io),然后点创建仓库。

创建SSH keys,并且配置到github上

  具体的请参考ssh的指导文档,很简单的

配置_config.yml文件并发布

在 ~\hexo 下,有一个文件叫 _config.yml,打开它,拉到最底下,做如下修改: 

1
2
3
4
deploy:
type: github //改成github
repository: https://github.com/renliufeng/renliufeng.github.io //改成自己的用户名
branch: master

配置完以后还是在~\hexo下执行:

1
2
hexo generate
hexo deploy

执行完以后,如果报错 Error: Deployer not found : github,则执行如下命令:

1
npm install hexo-deployer-git --save

同时修改 _config.yml :

1
2
deploy:
type: git //改成git

然后再执行:

1
2
hexo generate
hexo deploy

然后访问: http://renliufeng.github.io/ (用户名改成自己的),就可以看到了.

注意,每次修改本地文件后,需要 hexo generate 才能保存。每次使用命令时,都要在 ~\hexo 目录下


核心命令

常用命令

1
2
3
4
5
6
7
$ hexo init #初始化
$ hexo new [layout] "postName" #新建文章
$ hexo new page "pageName" #新建页面
$ hexo generate #生成静态页面至public目录
$ hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
$ hexo deploy #将.deploy目录部署到GitHub
$ hexo clean //清楚缓存和发布文件

简写命令

1
2
3
4
$ hexo n == hexo new
$ hexo g == hexo generate
$ hexo s == hexo server
$ hexo d == hexo deploy

常用复合命令

1
2
$ hexo d -g 先生成静态页面,再部署到github
$ hexo s -g 先生成静态页面,再本地开启server

问题解决

(1) hexo可能更新过了,所以老的hexo可能会报错:

1
2
3
{ [Error: Cannot find module './build/Release/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }

解决办法如下,执行:

1
npm install hexo --no-optional