Hexo 实战

  1. Mac 搭建环境之安装node&npm

推荐安装安装nvm来管理Node版本

  • 安装nvm
1
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash
  • 安装node和npm
1
$ nvm install <version>
  • 安装Hexo-ci
1
$ npm install -g hexo-cli
  • 将镜像设置为淘宝镜像
1
2
$ export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
$ npm --registry=https://registry.npm.taobao.org
  1. Hexo 写文章的常用命令
  • 新建文章
1
$ hexo new "title"

新建一个文章, 标题为title

  • 本地预览
1
$ hexo server
  • 文章部署
1
$ hexo deploy
  • 清除缓存
1
2
// 清除缓存文件 db.json 和已生成的静态文件 public
$ hexo clean
  • 生成静态文件
1
$ hexo generate

生成网站静态文件到默认设置的 public 文件夹。

  • 生成About Me
1
$ hexo new page aboutme

新建一个标题为 aboutme 的页面,默认链接地址为 主页地址/aboutme/

  • 新建草稿箱
1
$ hexo new draft "draft_title"

source目录下回有一个_drafts文件目录, 这里有左右的草稿文件draft_title

  • 写好了草稿, 在不发布的情况下预览
1
$ hexo server --draft
  • 发布草稿
1
$ hexo publish "draft_title"

_drafts目录里的b.md不见了, 跑到了_posts里面, 草稿发布成功了

  1. Hexo 多终端同步方案

需求场景: 需要在公司或者家庭多个电脑完成Hexo的博客撰写和发布工作。这就涉及到Hexo多电脑的同步问题。

  • Hexo 私有仓库创建

创建一个私有git仓库,平台任选, github&coding等都可以

  • 建立本地git仓库

进入你现有的Hexo文件夹,删除第三方主题的git配置,如对next主题

1
$ rm -rf ./themes/next/.git

建立本地的仓库

1
$ git init

编辑.gitignore文件

1
.DS_StoreThumbs.dbdb.json*.lognode_modules/public/.deploy*/
  • 本地仓库关联到私有仓库
1
2
3
4
$ git remote add origin https://git.coding.net/<yourname>/Hexo-my.git
$ git add .
$ git commit -m "my first private hexo"
$ git push -u origin master

至此,就完成了本地Hexo源码的全备份

请自觉传送到你的另外一台终端上进行写作, 必要条件: node/npm/hexo/git 工具的安装

这里假装你都已经安装好了

  • Hexo 拉取
1
$ git clone https://git.coding.net/iforvert/Hexo-iforvert.git

这样你就拥有了你的所有Hexo源文件

  • Hexo部署

特别提醒:

尽管拉取下来了,还需要建立一下Hexo的环境,这里需要格外注意的一点是:
千万不要用hexo init命令。原因是当前目录已经建立了git仓库环境, hexo init会覆盖到当前的git环境,重建一个新的,这样和我们的私有Hexo源码仓库脱离了联系。

正确的做法是

1
$ npm install

因为package.json里面已经保存了hexo的必备资源包信息,npm install后Hexo环境就建立起来了。

  • Hexo 编写和发布

自行穿越到文章顶部, 完成文章的创建, 生成, 预览, 发布等过程, 这里不做赘述.

  • 同步到私有库

流程如下:

1
2
3
4
$ git status
$ git add .
$ git commit -m "log"
$ git push xxx
  • Hexo 仓库更新
1
$ git fetch --all

将git上所有的文件拉取到本地并覆盖本地(以远端为准)

1
$ git reset --hard origin/master

reset 对所拉取的文件不做任何处理,此处不用 pull 是因为本地尚有许多文件,使用 pull 会有一些版本冲突,解决起来也麻烦,而本地的文件都是初始化生成的文件,较拉取的库里面的文件而言基本无用,所以直接丢弃。