Hexo 是一个基于 Node.js 的静态博客框架,它允许用户通过 Markdown 文件快速生成静态网页。

Hexo 目录结构

Hexo 的目录结构清晰,便于管理和扩展。以下是 Hexo 项目的基本目录结构:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.
├── .deploy_git
├── node_modules
├── public
├── scaffolds
| ├── post.md
| ├── page.md
| └── draft.md
├── source
| ├── _drafts
| └── _posts
├── themes
| └── theme-name
| ├── _config.yml
| ├── languages
| ├── layout
| ├── scripts
| └── source
├── _config.yml
├── _config.theme-name.yml
├── package.json
├── yarn.lock
└── package-lock.json

目录

node_modules

存放通过 npm 安装的 Node.js 模块。这些模块包括 Hexo 核心模块以及用户安装的插件和主题。当你执行hexo init命令进行初始化时内部会执行npm install命令生成该目录文件。

public

这是 Hexo 生成静态文件的目录。如果你想快速部署博客站点,仅需将该目录下文件上传到wwwroot目录即可

当你运行 hexo generatehexo g命令时,Hexo 会将 source 目录下的 Markdown 文件和模板渲染成 HTML 文件,并存放在这里。

当你执行 hexo clean命令时,该目录下的文件会被清理。

当你执行hexo deployhexo d命令时,该目录下的文件会被部署到远程仓库。

scaffolds

这个目录包含了文章模板,当你使用 hexo new 命令创建新文章时,Hexo 会根据这里的模板生成文章的 Markdown 文件。例如,如果你有一个名为 post.md 的模板,当你运行 hexo new post "My New Post" 时,Hexo 会在 source/_posts 目录下创建一个名为 My-New-Post.md 的文件,并使用 post.md 模板的内容作为基础。

  • post.md: 这是创建新文章时使用的默认模板。当你运行 hexo new post "My New Post" 或者不指定模板hexo new "My New Post"时,Hexo 会根据 post.md 模板生成一个新的 Markdown 文件,并将其存放在 source/_posts 目录下。
  • draft.md: 这是创建新草稿文章时使用的模板。当你运行 hexo new draft "My New Draft" 时,Hexo 会根据 draft.md 模板生成一个新的 Markdown 文件,并将其存放在 source/_drafts 目录下。
  • page.md: 这是创建新页面时使用的模板。当你运行 hexo new page "My New Page" 时,Hexo 会根据 page.md 模板生成一个新的 Markdown 文件,并将其存放在 source/page/My-New-Page 目录下。 在 Hexo 中,页面通常指的是那些不需要按照时间顺序排列的静态内容,如关于我、联系方式等。每个页面通常有自己的文件夹,文件夹名即为页面名。例如,如果你想创建一个名为 about 的页面,你可以在source/page/about 目录下创建一个 Markdown 文件,Hexo 会自动将其渲染成一个页面。

source

这是存放用户资源的主要目录。

  • _drafts:草稿文章存放的目录。草稿文章默认不会在生成静态网页时被包含。你可以通过设置 publish_drafts: true_config.yml 中来改变这一行为。这些文章不会在运行 hexo generatehexo server 时被渲染。
  • _posts:正式发布的文章存放的目录。这些文章会被渲染并包含在生成的静态网页中。

source 目录下,存放非文章类型的页面。你还可以创建其他目录来组织你的内容,如图片、视频等。

themes

这个目录用于存放主题文件。Hexo 支持自定义主题,你可以在这个目录下放置不同的主题文件夹,每个文件夹内包含该主题的 _config.yml 配置文件和相关的模板、样式和脚本文件。

每个主题都有一个独立的目录,目录名通常是主题的名称。例如,如果你使用的是 landscape 主题,那么目录结构可能如下:

1
2
3
4
5
6
7
themes/
└── landscape
├── _config.yml
├── languages
├── layout
├── scripts
└── source
  • _config.yml: 主题的配置文件,允许用户根据个人喜好调整主题的设置。
  • languages: 存放语言文件,用于国际化。
  • layout: 存放主题的模板文件,如 index.ejs, post.ejs 等。
  • scripts: 存放主题的脚本文件。
  • source: 存放主题的资源文件,如样式表(CSS)、图片等。

文件

.deploy_git

当使用 hexo deploy 命令部署到 Git 仓库时,生成的文件会临时存放在这里。

_config.yml

这是 Hexo 的全局配置文件,用于配置网站的基本信息,如网站标题、描述、作者、URL 等,此外,还有关于主题、插件、分页、日期格式、分类和标签等的配置。以及一些插件和主题的设置。

  • title: 网站标题

  • subtitle: 网站副标题

  • description: 网站描述

  • author: 作者名字

  • language: 网站语言

  • timezone: 网站时区

  • url: 网站的 URL

更多配置信息可参考官网说明文档

_config.theme-name.yml

是 Hexo 主题的配置文件,其中 theme-name 应替换为实际使用的主题名称。这个文件允许用户在不修改主题源文件的情况下,调整主题的设置。每个主题可以有自己的配置文件,这样用户可以根据自己的喜好和需求来定制主题的行为和外观。更多详细内容可查阅使用代替主题配置文件

package.json

这个文件包含了 Hexo 及其插件和主题的元数据和依赖信息。通过这个文件,可以使用 npm 来安装和管理这些依赖。这个文件是 Node.js 项目的标准配置文件,它包含了项目的元数据(如名称、版本、描述等)和依赖项。当你运行 npm install 时,npm 会根据这个文件安装所需的模块。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"name": "hexo-site",
"version": "0.0.0",
"private": true,
"hexo": {
"version": "4.2.0"
},
"dependencies": {
"hexo": "^4.2.0",
"hexo-deployer-git": "^2.1.0",
"hexo-generator-archive": "^1.0.0",
"hexo-generator-category": "^1.0.0",
"hexo-generator-index": "^1.0.0",
"hexo-generator-tag": "^1.0.0",
"hexo-renderer-ejs": "^1.0.0",
"hexo-renderer-marked": "^3.0.0",
"hexo-renderer-stylus": "^1.1.0",
"hexo-server": "^1.0.0"
}
}

yarn.lock

  • 生成工具: Yarn
  • 作用: yarn.lock 文件记录了项目中所有依赖的确切版本信息,包括直接依赖和间接依赖。这确保了无论在哪个开发环境或部署环境中,只要使用 Yarn 安装依赖,都能得到相同的依赖版本。
  • 使用场景: 当你使用 Yarn 安装或更新依赖时,Yarn 会自动更新 yarn.lock 文件。这个文件应该被提交到版本控制系统中,以保证团队成员或持续集成/部署系统能够安装相同的依赖版本。

package-lock.json

  • 生成工具: npm
  • 作用: package-lock.json 文件同样记录了项目中所有依赖的确切版本信息,包括直接依赖和间接依赖。它确保了无论在哪个环境中使用 npm 安装依赖,都能得到相同的依赖版本。
  • 使用场景: 当你使用 npm 安装或更新依赖时,npm 会自动更新 package-lock.json 文件。这个文件也应该被提交到版本控制系统中,以保证团队成员或持续集成/部署系统能够安装相同的依赖版本。

yarn.lock 与 package-lock.json 区别与注意事项

  • 兼容性: package-lock.json 是 npm 5.x 及以上版本的特性,而 yarn.lock 是 Yarn 的特性。如果你在项目中同时使用了 npm 和 Yarn,通常只需要保留其中一个锁定文件。
  • 选择: 项目中应该选择使用 npm 还是 Yarn,通常取决于团队的偏好和工具链。一旦选择了包管理器,就应该坚持使用其对应的锁定文件。
  • 版本控制: 两个锁定文件都应该被包含在版本控制中,但不应该被手动修改。它们应该由包管理器自动更新。
  • 冲突解决: 如果项目中同时存在 yarn.lockpackage-lock.json,可能会导致冲突或不一致。通常建议团队选择一个包管理器,并删除另一个包管理器生成的锁定文件。

参考

Hexo官网

备份和迁移hexo博客