博客数据管理

使用 hexo-cli 创建了一个本地的 Hexo 博客实例后,Hexo 会自动生成一个目录结构:

1
2
3
4
5
6
7
8
9
10
11
.
├── _config.landscape.yml
├── _config.yml
├── db.json
├── node_modules
├── package-lock.json
├── package.json
├── public
├── scaffolds
├── source
└── themes

如上所示,在这个目录结构里,博客文章源文件,主要放在 source 目录里,而生成的二进制文件,主要放在了 public 目录里。让我们看一下 public 目录的结构。

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
public
├── 2024
│   └── 02
│   └── 07
│   ├── How-to-create-a-blog-with-Hexo
│   │   └── index.html
│   ├── HowTo-用-Hexo-建立一个博客
│   │   └── index.html
│   └── hello-world
│   └── index.html
├── archives
│   ├── 2024
│   │   ├── 02
│   │   │   └── index.html
│   │   └── index.html
│   └── index.html
├── categories
│   └── Guide-手册
│   └── index.html
├── css
│   ├── images
│   │   └── banner.jpg
│   └── style.css
├── fancybox
│   ├── jquery.fancybox.min.css
│   └── jquery.fancybox.min.js
├── index.html
├── js
│   ├── jquery-3.6.4.min.js
│   └── script.js
└── tags
└── guide
└── index.html

不难理解,这个 public 目录,就是一个网站的根目录,可以理解为一个 VirtualHostDocumentRoot。这里目录里的每个人文件的路径,其实就是最终网址后面的 path。

我们可以看到,文章的路径是按照 /年/月/日/文章名/ 这样的方式组织的,为什么是这样的呢?打开主配置文件 _config.yml,可以看到如下的配置项:

1
permalink: :year/:month/:day/:title/

上面是文章永久链接的配置项,指定了生成的页面的 path,你也可以在文章的 FrontMatter 区段指定此篇文章的配置,如果没有指定,就会按照主配置文件的规则。通过这样的配置,我们可以使最后生成的网站的文章目录井井有条。比起最后生成的网页来说,源文件是更重要的数据,因为如果我们更换整个博客的 Theme,那么所有的文章需要重新生成,这时候更重要的是源文件。现在来看看源文件的目录布局。

1
2
3
4
5
6
7
8
9
10
11
➜  blog git:(main) ✗ tree source
source
├── _drafts
│   └── 博客数据管理.md
└── _posts
├── How-to-create-a-blog-with-Hexo.md
├── HowTo-用-Hexo-建立一个博客.md
├── HowTo-给博客安装一个主题.md
└── hello-world.md

3 directories, 5 files

相比之下,源文件的目录的布局就比较简单,所有的已经发布的文章,都混在一个单一目录 _posts 中,现在文章数量少,看着还行,不那么凌乱,一旦文章数量变多,比如,超过 400 篇,则会变得相当难以管理。那么我们到底能不能也像 public 文件夹那样,将源文件也管理得井井有条呢?

当然可以!

Hexo 并不会在意 _posts 目录里的布局,它会递归地扫描所有的源码文件,然后按照 permalink 配置的模式去生成最后的页面,所以,最后的页面是什么网址,和你的源文件怎么组织,是没有关联的。这就使得你可以自由地安排自己的目录布局。

[HowTo] 给博客安装一个主题

Hexo 的博客安装后,会自带一套皮肤,landsacpe,如果样式不满足您的需要,可以自行安装喜欢的皮肤。

Hexo 有庞大的社区,很多作者贡献了皮肤和插件。博客皮肤下载后,解压到 Hexo 博客的 themes 目录,
就算安装成功了。

比如,著名的皮肤,NexT,安装的时候,可以先进入目录,然后使用 git 克隆版本库:

1
2
cd themes
git clone https://github.com/next-theme/hexo-theme-next next

如果你使用 git 管理自己的 Hexo 博客,也可以像我一样用 git 的 submodule 来管理皮肤。比如,您的
博客目录已经置于 git 的管理之下,在博客的根目录,执行:

1
git submodule add themes/next https://github.com/next-theme/hexo-theme-next

就可以将皮肤 NexT 添加为一个子模块。

还有一种安装方法,是使用 node 的包管理器 npm:

1
npm install hexo-theme-next

会以 npm 包的方式安装 NexT theme。

这款皮肤也支持一些自定义的功能,通过配置文件来设置。在 themes/next/ 目录里,会有一份配置文件,但是,不推荐使用目录的配置文件,可以使用 Hexo 博客根目录里的配置文件,比如 _config.yml 这是 Hexo 的配置文件,_config.next.yml 则是主题 NexT 的配置文件。

这样,如果你是用 Git 或者 npm 包方式使用 NexT 皮肤,以后就可以使用 npm upgrade 或者 git pull & git checkout 进行主题的升级。因为你没有修改主题的源码。