Hexo
Hexo 是什么
Hexo 是一款基于 Node.js 开发的轻量级静态博客框架,由台湾开发者 Tommy Chen 于 2012 年创建,采用 MIT 开源协议,是国内个人博客领域知名度最高、用户基数最大的静态站点生成器之一。
它以 Markdown 为内容载体,通过简单的命令即可将文章批量渲染为完整的静态 HTML 站点,一键部署到 GitHub Pages 等平台,全程无需数据库与后端服务,是很多开发者搭建个人博客的入门首选。
Hexo核心架构与工作原理
Hexo 围绕「内容即代码」的理念设计,整体采用模块化架构,核心工作流清晰可控。
1. 核心模块
- 内容解析模块:通过
hexo-front-matter提取文章头部元数据,配合 Markdown 解析器将正文转换为 HTML 片段,原生支持 GFM 语法。 - 渲染引擎(Renderer):负责将内容与模板结合,生成最终页面。原生支持 EJS 模板,可通过插件扩展 Pug、Nunjucks、Swig 等模板引擎,也支持 Sass/Less 等样式预处理器。
- 生成器(Generator):执行
hexo generate时的核心模块,根据路由规则批量生成所有静态页面、归档页、标签页、分类页等。 - 本地服务器(Server):内置开发服务器,支持热更新预览,默认运行在 4000 端口,用于本地调试。
- 部署器(Deployer):通过插件扩展部署能力,支持一键推送到 Git 仓库、云存储等多种目标平台。
2. 完整工作流程
- 本地编写 Markdown 文章,文件存放于
source/_posts目录 - 执行构建命令,Hexo 解析文章元数据与正文
- 结合选中主题的模板与样式,渲染生成完整的 HTML/CSS/JS 文件
- 所有静态产物输出到
public目录 - 通过部署命令将
public目录的文件推送到托管平台
3. 路由映射规则
Hexo 采用基于文件系统的自动路由:
source/_posts/文章名.md默认映射为/YYYY/MM/DD/文章名.htmlsource/about/index.md会生成为/about/页面- 路由格式可通过全局配置自定义,支持纯静态、后缀隐藏等多种格式
Hexo核心特性
1. 极速生成效率
基于 Node.js 异步 IO 实现,数百篇文章可在数秒内完成构建,相比同类型老牌工具 Jekyll 构建速度有数量级提升,完全满足个人博客的日常更新需求。
2. 全面的 Markdown 支持
原生支持标准 Markdown 与 GFM 扩展语法,同时提供专属的标签插件(Tag Plugins),可在 Markdown 中直接插入提示框、代码块、引用、视频等富内容,无需手写 HTML。
3. 灵活的模板与定制能力
支持多种主流模板引擎,主题体系成熟,既可以直接使用现成主题,也可以通过修改模板、自定义样式实现高度个性化的页面效果。
4. 丰富的扩展生态
拥有完善的插件系统,覆盖内容生成、功能增强、部署、第三方集成等全场景,RSS、站点地图、全文搜索、评论系统等常用功能都有成熟插件可直接使用。
5. 开箱即用的部署能力
支持一键部署到 GitHub Pages、Vercel、云服务器等多种平台,配合 CI/CD 工具可实现「提交 Markdown 自动更新站点」的自动化工作流。
6. 友好的迁移兼容
兼容 Octopress 的绝大多数插件与写作格式,从其他博客平台迁移成本低,也支持从 WordPress、Jekyll 等工具批量导入文章。
Hexo安装与基础使用
1. 前置依赖
使用 Hexo 前需要先安装两个环境:
- Node.js:建议 14.x 及以上 LTS 版本
- Git:用于主题安装与代码部署
2. 快速安装步骤
- 全局安装 Hexo 命令行工具:
npm install -g hexo-cli- 初始化博客项目:
hexo init my-blog
cd my-blog
npm install- 启动本地预览服务器:
hexo server启动后访问 http://localhost:4000 即可查看默认博客。
3. 核心常用命令
| 完整命令 | 简写 | 功能说明 |
|---|---|---|
hexo new post "文章标题" | - | 新建一篇博客文章 |
hexo generate | hexo g | 生成全部静态文件到 public 目录 |
hexo server | hexo s | 启动本地预览服务器,支持热更新 |
hexo clean | hexo c | 清理缓存与已生成的 public 文件 |
hexo deploy | hexo d | 按配置一键部署站点 |
hexo new page "页面名" | - | 新建独立页面(如关于页、友链页) |
日常开发常用组合命令:
# 清理并重新生成
hexo clean && hexo g
# 清理生成后直接部署
hexo clean && hexo g && hexo dHexo核心配置体系
1. 全局配置文件 _config.yml
这是 Hexo 的主配置文件,站点的所有基础设置都在此处修改,核心配置项包括:
# 站点基础信息
title: 我的博客
subtitle: 记录技术与生活
description: 博客描述(用于SEO)
author: 作者名
language: zh-CN
timezone: Asia/Shanghai
# URL 配置(影响页面链接与SEO)
url: https://your-domain.com
root: /
permalink: :year/:month/:day/:title/
# 主题设置
theme: landscape
# 分页设置
per_page: 10
# 部署配置
deploy:
type: git
repo: https://github.com/username/username.github.io.git
branch: main2. 文章 Front Matter
每篇 Markdown 文章的头部通过 YAML 格式定义元数据,用于控制文章属性,常用字段如下:
---
title: 文章标题
date: 2026-08-17 10:00:00
categories: 技术分类
tags:
- Hexo
- 静态站点
top: true # 置顶文章
comments: true # 开启评论
description: 文章摘要,用于SEO与列表展示
math: false # 是否开启数学公式渲染
---Hexo主题生态
Hexo 的主题生态极其丰富,官方主题站收录超过 400 款主题,覆盖简约、卡片、二次元、技术风等多种风格,中文社区的主题质量与维护度普遍较高。
主流经典主题
- NexT(Next):最经典的 Hexo 主题,简约素雅,专注阅读体验,内置多种布局方案,功能完善,是很多用户的第一款主题。
- Butterfly:当前中文社区最热门的主题,颜值高、功能丰富,支持暗色模式、相册、说说、友链等大量特色功能,定制性极强。
- Matery:卡片式设计风格,响应式适配优秀,视觉效果现代,适合打造个性化技术博客。
- Landscape:Hexo 默认主题,简洁轻量,适合追求极简、不想折腾配置的用户。
- Maupassant:极简排版风格,专注文字阅读,加载速度极快,适合纯文字博客。
主题使用方式
主题通常存放于 themes/主题名 目录,通过修改全局配置中的 theme 字段切换;推荐使用单独的 _config.主题名.yml 配置文件管理主题设置,避免主题更新时覆盖自定义配置。
Hexo插件生态
Hexo 插件通过 NPM 安装,在 _config.yml 中注册即可生效,常用插件可分为以下几类:
1. 基础功能类
hexo-deployer-git:Git 部署插件,支持一键推送到 GitHub/Gitee Pageshexo-generator-sitemap:自动生成站点地图,提升 SEO 收录hexo-generator-feed:生成 RSS 订阅源hexo-generator-search:生成本地搜索索引,实现站内全文搜索hexo-generator-archive:增强归档页面功能
2. 内容增强类
hexo-asset-image:优化文章图片引用,支持与文章同名的资源目录hexo-prism-plugin:替换默认代码高亮,实现更美观的代码样式hexo-tag-xxx:各类标签插件,扩展 Markdown 可插入的内容类型
3. 优化类
hexo-all-minifier:自动压缩 HTML/CSS/JS/图片,优化站点加载速度hexo-filter-nofollow:自动为外链添加 nofollow 属性,优化 SEO
Hexo主流部署方案
Hexo 生成的 public 目录是纯静态文件,几乎支持所有静态托管平台,主流部署方式如下:
1. 代码托管平台 Pages
- GitHub Pages:最经典的免费方案,配合
hexo-deployer-git一键部署,适合个人用户 - Gitee Pages:国内访问速度更快,适合国内用户,配置方式与 GitHub 基本一致
2. 自动化托管平台
- Vercel / Netlify / Cloudflare Pages:绑定 GitHub 仓库后自动构建部署,自带全球 CDN、HTTPS、预览部署,是当前体验最优的方案
- 优势:无需本地执行构建命令,提交 Markdown 到仓库后自动完成构建与发布
3. 云服务器部署
将 public 目录上传到服务器,通过 Nginx 托管;也可配合 Git Hook 实现推送自动更新,适合有自有服务器的用户。
4. 对象存储 + CDN
部署到阿里云 OSS、腾讯云 COS 等对象存储服务,搭配 CDN 加速,适合追求国内访问速度、有自定义域名需求的用户。
Hexo优缺点分析
优点
- 中文生态完善:国内用户基数大,中文教程、主题、问题排查资源极其丰富,新手遇到问题极易找到解决方案
- 上手门槛极低:命令简单,配置清晰,默认配置即可生成可用的博客,无需掌握前端工程化知识
- 主题插件丰富:从简约到复杂的各类需求基本都有现成方案,不用从零开发
- 写作体验流畅:纯 Markdown 写作,本地编辑,配合 Git 可实现版本管理
- 部署成本极低:大量免费托管平台可选,零成本即可上线个人博客
缺点
- 大内容量性能有限:当文章数量超过 500 篇后,构建速度明显慢于 Hugo、Zola 等编译型工具
- 主题质量参差不齐:大量第三方主题维护状态不一,部分主题存在兼容性问题、长期不更新
- 定制深度有限:相比 Astro、Next.js 等现代框架,Hexo 的组件化能力较弱,高度定制化开发成本较高
- 依赖 Node.js 环境:需要本地安装 Node.js 环境,相比单二进制工具便携性稍差
Hexo适用场景与选型建议
适合人群
- 想搭建个人技术博客/生活博客的新手用户
- 习惯 Markdown 写作、追求简单省心的内容创作者
- 不想维护服务器与数据库、希望零成本上线站点的用户
- 有一定前端基础,想适度定制博客外观的开发者
不适合场景
- 文章数量上千篇的超大体量内容站(更推荐 Hugo)
- 需要大量动态交互、用户系统的复杂站点(更推荐 Next.js/Nuxt)
- 企业级营销官网、品牌站(更推荐 Astro)
整体而言,Hexo 是个人博客领域的「国民级入门工具」,生态成熟、学习资源丰富,如果你是第一次搭建个人博客,它是非常稳妥的选择。
Hexo 从零搭建到部署完整教程
这是一份面向新手的保姆级操作指南,全程跟着做就能从 0 到 1 上线属于自己的个人博客。
一、前置环境准备
Hexo 依赖 Node.js 和 Git 两个工具,安装完成后才能进行后续操作。
1. 安装 Node.js
Hexo 基于 Node.js 运行,建议安装 16.x 及以上的 LTS(长期支持)版本。
- 下载地址:Node.js 官网
- 安装时全程默认下一步即可,安装完成后打开终端(Windows 用 CMD/PowerShell,Mac 用终端),输入以下命令验证:
node -v
npm -v输出版本号即说明安装成功。
2. 安装 Git
Git 用于后续安装主题、代码提交和部署。
- 下载地址:Git 官网
- 同样默认安装即可,安装完成后在终端验证:
git --version输出版本号即说明安装成功。
二、安装 Hexo 并初始化项目
环境准备好后,就可以安装 Hexo 命令行工具并创建博客项目了。
1. 全局安装 Hexo 脚手架
在终端执行以下命令,全局安装 hexo-cli:
npm install -g hexo-cli安装完成后验证:
hexo -v输出版本信息即安装成功。
2. 初始化博客项目
选择一个存放博客的文件夹,在终端进入该目录后,执行初始化命令(my-blog 可替换为你自己的项目名):
hexo init my-blog初始化完成后,进入项目目录并安装依赖:
cd my-blog
npm install至此,一个基础的 Hexo 博客就已经创建完成了。
三、项目目录结构说明
初始化完成后,项目根目录下的核心文件和文件夹如下:
my-blog/
├── _config.yml # 站点全局配置文件(改站点信息、主题、部署等都在这里)
├── package.json # 项目依赖与脚本配置
├── scaffolds/ # 文章模板,新建文章时会套用这里的格式
├── source/ # 内容资源目录
│ └── _posts/ # 所有博客文章都存放在这里
├── themes/ # 主题目录,每个子文件夹对应一个主题
└── public/ # 构建生成的静态文件目录(执行 hexo g 后才会出现)日常使用中,90% 的操作都围绕 _config.yml 和 source/_posts 两个位置。
四、本地预览与第一篇文章
1. 启动本地预览服务
在项目根目录执行:
hexo server启动成功后,打开浏览器访问 http://localhost:4000,就能看到 Hexo 默认的博客页面了。
提示:修改文章内容会自动热更新,修改配置文件后需要重启服务(Ctrl+C 停止后重新执行
hexo server)。
2. 新建第一篇文章
新开一个终端窗口,在项目根目录执行:
hexo new post "我的第一篇Hexo博客"执行后会在 source/_posts 目录下生成一个同名的 .md 文件。
3. 编写文章内容
打开生成的 Markdown 文件,顶部是文章元数据(Front Matter),下方是正文内容:
---
title: 我的第一篇Hexo博客
date: 2026-08-17 15:30:00
tags:
categories:
---
这里是文章正文,直接用 Markdown 语法书写即可。常用 Front Matter 字段说明:
title:文章标题date:发布日期tags:文章标签,可写多个,换行缩进即可categories:文章分类top: true:置顶文章comments: false:关闭该文章的评论
写完保存后,刷新本地页面就能看到新文章了。
五、核心站点配置
打开根目录下的 _config.yml 文件,修改以下基础信息,让博客变成你自己的:
# 站点基础信息
title: 我的个人博客 # 博客标题
subtitle: 记录技术与生活 # 副标题
description: 这是我的个人技术博客,分享编程与生活感悟 # 站点描述,用于SEO
author: 你的名字 # 作者名
language: zh-CN # 语言,设为简体中文
timezone: Asia/Shanghai # 时区,必须设置,否则时间会出错
# URL 配置(部署后必须改成你的实际域名)
url: https://你的用户名.github.io
root: /
# 永久链接格式,推荐简洁格式
permalink: :year/:month/:title/
# 分页设置
per_page: 10 # 每页显示10篇文章
# 当前使用的主题,默认是 landscape
theme: landscape注意:YAML 格式对缩进非常严格,冒号后面必须加一个空格,层级用两个空格缩进。
六、更换主题(以 Butterfly 为例)
默认主题比较简约,Hexo 最吸引人的就是丰富的主题生态,这里以目前中文社区最热门的 Butterfly 主题为例,演示更换流程。
1. 安装主题
在项目根目录执行,将主题克隆到 themes/butterfly 目录:
git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterfly2. 启用主题
打开根目录 _config.yml,找到 theme 字段,修改为:
theme: butterfly3. 主题配置(避免更新覆盖)
不要直接修改 themes/butterfly/_config.yml,后续主题更新会被覆盖。正确做法是:
- 将主题目录下的
_config.yml复制到项目根目录 - 重命名为
_config.butterfly.yml - 以后所有主题配置都修改这个文件
配置完成后,重启本地服务,就能看到新主题的效果了。
七、必备插件安装
Hexo 的功能通过插件扩展,以下是几个几乎必装的基础插件:
1. Git 部署插件
用于一键部署到 GitHub/Gitee 等平台:
npm install hexo-deployer-git --save2. 站点地图插件
生成 sitemap.xml,帮助搜索引擎收录,提升 SEO:
npm install hexo-generator-sitemap --save3. RSS 订阅插件
生成 RSS 订阅源,方便读者订阅:
npm install hexo-generator-feed --save4. 本地搜索插件
配合主题实现站内全文搜索:
npm install hexo-generator-searchdb --save安装后在主题配置文件中开启搜索功能即可。
八、部署上线(两种主流免费方案)
本地调试完成后,就可以把博客部署到网上,让所有人都能访问了。这里推荐两个最常用的免费方案。
方案一:GitHub Pages(经典免费方案)
新建 GitHub 仓库 登录 GitHub,新建一个名为
你的用户名.github.io的仓库(名称必须和用户名完全一致,否则无法正常访问)。配置部署信息 打开根目录
_config.yml,在最底部添加部署配置:yamldeploy: type: git repo: https://github.com/你的用户名/你的用户名.github.io.git branch: gh-pages执行部署 在终端执行:
bashhexo clean && hexo g && hexo d按提示输入 GitHub 账号和 Personal Access Token。
开启 Pages 服务 进入 GitHub 仓库的 Settings → Pages,选择 Source 为
gh-pages分支,保存后等待几分钟,访问https://你的用户名.github.io就能看到你的博客了。
方案二:Vercel 自动部署(更推荐)
Vercel 是目前体验最好的静态站点托管平台,自带全球 CDN、HTTPS,提交代码自动构建部署,无需本地执行部署命令。
将项目推送到 GitHub 仓库 把整个 Hexo 项目(不需要
public和node_modules目录,.gitignore已经自动排除)推送到你的 GitHub 仓库。绑定 Vercel 打开 Vercel 官网,用 GitHub 账号登录,点击「Add New → Project」,导入刚才的仓库。
一键部署 Vercel 会自动识别 Hexo 项目,自动填充构建命令和输出目录,直接点击「Deploy」即可。 等待 1-2 分钟构建完成,就可以通过 Vercel 分配的域名访问博客了。
优势:以后写新文章只需要把 Markdown 文件提交到 GitHub,Vercel 会自动构建更新,完全不用手动执行部署命令。
九、日常写作常用命令汇总
| 命令 | 作用 |
|---|---|
hexo new post "标题" | 新建一篇博客文章 |
hexo new page "页面名" | 新建一个独立页面(如关于页、友链页) |
hexo server / hexo s | 启动本地预览服务 |
hexo generate / hexo g | 生成静态文件到 public 目录 |
hexo clean / hexo c | 清理缓存和已生成的 public 文件 |
hexo deploy / hexo d | 一键部署站点 |
hexo clean && hexo g && hexo d | 常用组合:清理→生成→部署 |
十、常见问题排查
- 修改配置后页面没变化:先执行
hexo clean清理缓存,再重新生成预览。 - 部署后样式丢失、页面错乱:检查
_config.yml中的url和root配置是否与实际域名路径一致。 - 4000 端口被占用:启动时指定其他端口:
hexo server -p 5000。 - 主题不生效:检查主题文件夹名称是否与配置中的
theme字段完全一致,YAML 缩进是否正确。