Hexo更新到3后很多设置都变更了,网上大多数教程都是面向Hexo2的, 自己在建立blog的时候遇到了一些问题,现在记录下来
Hexo安装前置条件
这部分不详述, 都是通用的, 有很多教程可以参考
- git安装
- Node.js安装
Hexo安装
前置准备完成后
1 | $ npm install -g hexo-cli |
在OS X上面安装完毕之运行hexo时可能会提示这样的错误:
1
2
3 [SyntaxError: Unexpected token ILLEGAL]
{ [Error: Cannot find module './build/default/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
{ [Error: Cannot find module './build/Debug/DTraceProviderBindings'] code: 'MODULE_NOT_FOUND' }
安装时,可以用
npm install hexo --no-optional
来解决详情参见issues1055
在Hexo3中,hexo-server独立出来了,如要本地调试,需要先安装
1 | $ npm install hexo-server --save |
其余独立出来的还包括下面这些,特别是hexo-deployer-git这个模块,不安装的话后面在运行hexo deploy
时会提示找不到git,参见这个issues1040.
详细的Hexo2to3信息
1 | npm install hexo-generator-index --save |
可以到\node_modules目录下面看自己是不是已经安装了这些模块.
如果已经执行过后面这个步骤了,那么进入hexo所在的文件夹,来安装缺失的模块,如下:
1 | $ cd <hexo_folder> |
Hexo部署
若npm install 安装过程卡住不动
修改 npm 的安装目录下的 npmrc文件 增加一条registry=http://registry.cnpmjs.org
1 $ npm config set registry http://registry.cnpmjs.org
生成静态文档
1
$ hexo generate
开启本地server调试
1
$ hexo server
打开localhost:4000则可以在本地看到生成的页面
上传到Github
在config.yml文件中配置好deploy
参数:1
2
3deploy:
type: git
repo: <repository>
然后执行
1
$ hexo deploy
编写博客
编写博客比较简单,教程很容易找,官方文档见hexo写作.
下面聊聊如何实现多处来同步编辑博客,主要有如下几个方案
VPS
VPS方案需要一台VPS主机,在上面配置好Hexo所需要的环境,SSH到主机编辑同步即可
云coding环境
比较有名的有Koding,Cloud9.该方案类似于主机,好处是可以直接在线编辑,koding平台在国内貌似被墙.
参见koding非教程贴github管理
直接用把Blog所在的文件夹当成一个git库来同步,好处是有git就行了,但是在想要编辑blog的机器上都要配置Hexo所需的环境,几个需要注意的事项参见issues752:
- 如果主题是通过git管理的,需要将主题文件夹下的.git文件夹删除,才能同步Blog文件夹(.git文件夹是隐藏的,需要显示隐藏文件才能删除,Linux下需要
rm -rf
命令才能删除,Mac没用过,不清楚)。 - 按照Blog目录下自带的.gitignore文件,node_modules文件夹是不会同步的,所以同步之后需要自己再次进行
npm install
,但是注意,不要进行hexo init
了,否则_config.yml全都白弄了。
- 如果主题是通过git管理的,需要将主题文件夹下的.git文件夹删除,才能同步Blog文件夹(.git文件夹是隐藏的,需要显示隐藏文件才能删除,Linux下需要
更换主题
hexo可用主题列表
其中pacman和Jacman个人比较喜欢,但是pacman目前还不支持Hexo3,代码高亮会有问题.
更新方法如下:
执行如下命令
1
git clone https://<git/repository> themes/<themename>
将
_config.yml
文件中的theme
字段设置为与<themename>
一致更新主题
可以通过根目录_config.yml文件中theme_config参数来设置主体的参数,这样可以避免更新主题的时候覆盖掉个性设置的部分更新前要记得备份
themes/<themename>
目录下的_config.yml
1
2cd themes/<themename>
git pull