文章目录
  1. 1. 迁移到Hexo
  2. 2. 迁移和配置
    1. 2.1. 安装hexo-deployer-git:
    2. 2.2. 安装Sitemap插件
  3. 3. 配置主题
  4. 4. 上传到Github
  5. 5. 更新Hexo
  6. 6. 常用命令
  7. 7. 常见问题

之前一直使用Octopress,折腾过好多次,出问题不少,而且生成文章速度越来越慢,需要自己添加各种插件,还弄过支持TOC一直没成功。

调研了一下,最终决定迁移到 Hexo,主要的原因是:

  • Hexo 的原理和 Octopress 一样,都是生成静态文件,这样可以方便地托管到 GitHub 和 GitCafe 上。
  • Hexo 是基于 Node 的,而 Node 的速度非常快。
  • Hexo 对 Octopress 的迁移很友好,图片引用方式完全一样,所以我的博客文章不需要做什么改动。

迁移到Hexo

Hexo官方文档:https://hexo.io/zh-cn/docs/index.html

因为GFW的存在,我在运行 npm 命令的时候都在前面加上了 proxychains4: 详细教程

安装nodejs:我使用的是 v4.5.0 稳定版https://nodejs.org/en

安装Hexo: npm install -g hexo-cli

初始化目录:

1
2
3
hexo init <blog>
cd <blog>
npm install

完成后便生成了以下目录结构:

1
2
3
4
5
6
7
8
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes

相比 Octopress,Hexo 的目录结构更加简单:

  • _config.yml 是博客的配置文件。
  • scaffolds 是博客文章模板。
  • source 是博客文章目录。
  • themes 存放主题风格文件。

迁移和配置

迁移起来还是很方便,把以前 Octopress 的 source/_post 目录下的文章,拷贝到 Hexo 的同名目录下即可。

以前的图片目录,也可以直接拷贝到 source/images 目录下。

将之前的 CNAME 文件以及 百度和Google的验证文件 放到source目录下即可。

然后修改 Hexo _config.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Site
title: '极致的技术博客'
subtitle: '这是我用来记录平日学习笔记的地方,欢迎您的访问.'
author: JiZhi
language: zh-CN
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://devma.cn
root: /
permalink: blog/:year/:month/:day/:title/
# Writing
new_post_name: :year-:month-:day-:title.markdown # File name of new posts

安装hexo-deployer-git:

1
npm install hexo-generator-sitemap --save

添加 --save 参数安装的模块的名字及其版本信息会出现在 package.jsondependencies 选项中。

修改 Hexo _config.yml

1
2
3
4
5
deploy:
type: git ##部署类型,其它类型自行google之
repo: <repository url> ##git仓库地址
branch: [branch] ##git 页面分支
message: [message] ##git message建议默认字段update 可以自定义

如果要同时部署在GitHub和Coding上,可以按照下面格式填写:

1
2
3
4
5
deploy:
type: git
repo:
github: git@github.com:<username>/<username>.github.io.git,master
coding: git@git.coding.net:<username>/<username>.git,coding-pages

安装Sitemap插件

1
npm install hexo-generator-sitemap --save

修改 Hexo _config.yml

1
2
plugins:
-hexo-generator-sitemap #插件名

配置主题

之前Octopress还弄过侧边栏、多说评论、摘要、访客记录、回到顶部、谷歌统计等,现在没有怪可惜的,但发现Hexo的主题Jacman居然已经帮忙支持了这些功能,还有TOC,这实在是令人欣喜!

安装主题:

1
2
cd <blog>
git clone https://github.com/wuchong/jacman.git themes/jacman

使用主题:

修改 _config.yml 文件如下:

1
2
3
theme: jacman
stylus:
compress: true

compress 值为true,在 hexo deploy 的时候会自动压缩 CSS 文件。

更新主题:

1
2
cd themes/jacman
git pull origin master

修改主题:

根据自己的需要修改themes/jacman/_config.yml文件。

相关的配置教程:官方配置指南

这是我 Fork 出来的 jacman 项目地址

添加 标签云 widget:

在themes/jacman/_config.yml中,添加如下:

1
2
widgets:
- tagcloud

上传到Github

将原来在Github上的Repository删掉重建,格式依旧是.github.io。

执行下面命令编译成静态文件并提交:

1
2
hexo generate
hexo deploy

更新Hexo

官方发布了新版本后,可以在Hexo建立的博客目录内运行:

1
npm update

常用命令

1
2
3
4
5
6
7
8
9
hexo new "" #新建文章
hexo new page "" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口(默认端口4000,'ctrl + c' 关闭server)
hexo deploy #将.deploy目录部署到GitHub
hexo help #查看帮助
hexo version #查看Hexo的版本
hexo deploy -g #生成加部署
hexo server -g #生成加预览

命令简写:

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

常见问题

  1. 执行 npm install 的时候报错:Error: EACCES: permission denied, open '/Users/name/.npm
    解决办法:sudo chown -R $(whoami) $HOME/.npm

  2. Mac 运行 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' }

    解决办法:安装 hexo-cli 的时候使用翻墙工具 proxychains4 npm install -g hexo-cli

  3. Markdown 语法:Hexo Markdown 简明语法手册

  4. 新建博客时 hexo new 中文 将中文标题转换为拼音:npm install hexo-new-post-pinyin --save

  5. 多台电脑同步发表文章:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    在另一台电脑上先安装好 node 和 hexo-cli,然后执行下面的命令:
    //把博客源码从服务器上克隆下来
    git clone git@git.coding.net:marujun/marujun.git blog-site
    cd blog-site
    //显示所有分支,并切换到源码分支
    git branch -a
    git checkout -b source origin/source
    //安装相应的 Node 依赖插件
    proxychains4 npm install
    //克隆我们修改过的主题
    git clone https://github.com/marujun/jacman.git themes/jacman
    //克隆已发布的网站元数据
    git clone git@git.coding.net:marujun/marujun.git .deploy_git
    cd .deploy_git
    git checkout -b coding-pages origin/coding-pages
    cd ..
    //现在就可以在新的电脑上发布文章了
    hexo g
    hexo d
    //发布完文章之后别忘了提交代码
    git add source/
    git commit -m 发布文章
    git push
    //在新的电脑上发布完文章之后,使用原来的电脑发布文章之前一定要先同步代码
    cd blog-site
    git pull
    cd .deploy_git
    git pull
    cd ..