前言

一直都想创建一个blog站点,用于记录笔记和生活随笔。特别是我觉得到处都充满了AI之后,我更希望能在这个时代,留下点真实的声音。所以当我获悉hugo可以静态建站的时候,就很想尝试一下。毕竟用markdown写文章,可以让你更专注。这一直是最理想的方式。Hexo建站,没想到特别顺利,,所以就把这过程也记录下来,方便以后查看。

Hexo是什么

Hexo 是一个快速、简洁且高效的博客框架。 Hexo 使用 Markdown(或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。它可以让你非常专注的写文章,只需要懂点markdown的语法,就可以快速输出既清晰又有条例的文章。

安装

要安装Hexo,主要需要安装三个工具。根据官网和操作平台的提示,下载安装好Node和Git就好。然后用npm安装Hexo-cli。

  • Node.js
  • Git
  • hexo
1
npm install -g hexo-cli

创建站点

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

通过hexo来初始化一个项目,它会从git 克隆 hexo-starter的repo。然后进入这个目录,就可以用npm install来安装依赖了。

启动服务

1
hexo server

这时候访问 http://localhost:4000已经可以预览站点了。虽然这个站点很简单,但是就几步,就生成了一个博客站点,简直太神速了。

创建不同的分类categories

假设我们希望创建 note 和 life 两个分类,分别放置不同类别的文章,那么可以这么做:

  1. source/_posts/ 下创建 notelife 文件夹,然后把对应的文章(如 note01.md, note02.md)放入 note 目录,life01.md, life02.md 放入 life 目录。
  2. 可以通过如下命令生成:hexo new --path note/note01 "note01"
    • 这里实际上是指定了路径,注意的是它使用默认的post模板,同时如果没有文件夹,则会创建note目录,并创建文件。
  3. 修改 themes/your-theme/_config.yml,在 menu 中添加分类链接:
    Hexo会默认安装一个主题,就是landscape,所以我们的内容要在_config.landscape.yml中进行修改。
1
2
3
4
menu: 
Home: /
Note: /categories/note/
Life: /categories/life/
  1. 运行 hexo g && hexo s,访问 /categories/note//categories/life/ 即可看到相应的文章列表。
  2. 如有必要,可以通过 hexo clean 清除内容后再重新生成。

为不同的分类创建模板

模板是放置于scaffolds目录下的,假设我需要为note创建一个模板,可以运行如下命令 hexo new page note
然后编辑note.md

1
2
3
4
5
6
7
---
title: {{ title }}
date: {{ date }}
categories: note
tags:
---

之后,我们就可以指定模板来创建文件了。 例如: hexo new note --path note/note03 "note03"

把博客站点部署到github上

  • 在github上建立名为 username.github.io的储存库。比如 hexojs.github.io.这一步是非常重要的, 也就是说你创建的这个存储库要跟你的用户名相同比如你的名字叫 hexojs那么你就要创建一个hexojs.github.io的repo

  • 保持当前目录 npm install --save hexo-deployer-git

  • 打开_config.yml目录,添加

1
2
3
4
5
deploy:
  type: git
  repo: https://github.com/<username>/<project>
  # example, https://github.com/hexojs/hexojs.github.io
  branch: master
  • 最后可以通过命令hexo deploy进行部署

# 其他命令

  • 创建一个文档 hexo new "my new post"

  • 创建一个指定路径的文档 hexo new post --path notes/note03 "note03"

  • 启动服务器 hexo server

  • 生成静态文件 hexo generate

  • 清理数据 hexo clean