这篇文章记录本站从写一篇 Markdown 到发布到 GitHub Pages 的完整流程。先分清三件事:文章写在 source 中,hexo generate 生成网页,hexo deploy 上传生成结果。修改本机文件不会自动更新线上网站。
一、先认识博客目录
| 文件或目录 | 用途 | 日常需要修改吗 |
|---|---|---|
_config.yml |
网站地址、标题、主题和部署配置 | 改网站设置时修改 |
package.json |
Hexo、插件依赖和运行命令 | 安装插件时更新 |
source/_posts/ |
已发表文章的 Markdown 文件 | 经常修改 |
source/_drafts/ |
尚未发表的草稿 | 按需修改 |
source/images/ |
图片资源 | 按需添加 |
source/about/index.md |
关于页面 | 按需修改 |
themes/LIFANULTRA/ |
本站主题的模板、样式和脚本 | 修改外观时使用 |
scaffolds/ |
新文章和新页面的初始模板 | 需要统一模板时修改 |
public/ |
生成的网站文件 | 不直接编辑 |
.deploy_git/ |
Git 部署插件使用的目录 | 不直接编辑 |
public 是生成结果。直接改其中的 HTML,下次重新生成时会被覆盖。需要保留的文章、图片和样式,应修改对应的源文件。
二、准备环境并进入博客目录
本站使用 Node.js、Git 和 Hexo。打开终端后可以检查:
1 | node --version |
如果提示找不到 hexo,安装全局命令行入口:
1 | npm install -g hexo-cli |
随后进入包含 _config.yml 和 package.json 的博客根目录。以下路径只是写法示例,需要换成自己的实际目录:
1 | cd "C:\你的博客目录\blog" |
首次配置项目,或从其他电脑复制源码后,安装项目依赖:
1 | npm install |
全局 hexo-cli 负责提供终端命令,项目里的 hexo 和插件负责运行网站。如果只安装了项目依赖,也可以在该目录中使用 npx hexo server;本站已配置全局入口,日常直接使用 hexo 即可。
三、新建文章与填写文章信息
新建一篇文章
1 | hexo new post "我的实验记录" |
Hexo 会根据模板,在 source/_posts/ 中创建文章文件。用文本编辑器打开这个 .md 文件即可写作。
文章顶部的 front-matter
文件开头两条 --- 之间是 YAML 文章信息,正文写在第二条 --- 下面。例如:
1 |
|
| 字段 | 用途 | 注意事项 |
|---|---|---|
title |
网页显示的文章标题 | 含英文冒号等特殊字符时,建议用引号包住 |
date |
文章发表时间 | 使用明确的日期和时间 |
updated |
最后修改时间 | 修订后可以同步更新 |
categories |
分类 | 多项列表可以表示分类层级 |
tags |
标签 | 一篇文章可以有多个标签 |
description |
文章简短描述 | 可选,适合写简洁摘要 |
YAML 缩进使用空格,不使用 Tab。sticky 等置顶设置是否有效,取决于主题或插件支持,不能仅加一个字段就默认会置顶。
摘要截断
在想结束首页摘要的位置加入:
1 | <!-- more --> |
本站首页主要显示文章列表;截断标记也便于以后使用摘要式列表或其他支持摘要的页面。
四、Markdown 的常用写法
标题层级
文章主标题由 front-matter 的 title 提供,正文通常从二级 Markdown 标题开始:
1 | ## 一级内容标题 |
本站将正文中的 ##、###、#### 分别对应黑体、楷体和仿宋标题。不要为了改变字号跳过层级,层级同时影响文章目录和阅读结构。
粗体、斜体与组合强调
下面先给语法,再给实际显示效果:
1 | **加粗中文 Bold 123** |
加粗示例:加粗中文 Bold 123。
斜体示例:斜体中文 Italic 123。
组合示例:加粗且斜体 Bold Italic 123。
反引号中的 **加粗语法** 只是代码展示,不会变成粗体。强调内容要放在代码块或反引号之外。某些中文字体没有原生粗体、斜体字形,浏览器会合成相应效果;西文优先使用 Times New Roman 的对应字形。
段落与列表
不同段落之间空一行。普通换行不一定会产生新的段落。无序列表使用 -,有序列表使用数字加英文句点:
1 | - 检查原始数据 |
链接
1 | [Hexo 官方文档](https://hexo.io/docs/) |
实际效果:Hexo 官方文档。本站用绿色区分链接,正文文字则随黑白模式切换。
引用说明
1 | > 这里写引用或需要单独提示的说明。 |
本地预览正常,只说明本机页面可以显示。发布后仍需要检查线上文章和资源链接。
表格
1 | | 项目 | 数值 | 单位 | |
表格适合整理并列信息。内容过多时,拆成几个短表,比在手机上挤进一个大表更容易阅读。
行内代码与代码块
短命令用单个反引号,例如 hexo generate。多行代码使用三个反引号包围,并在开头标明语言:
1 | ```python |
实际效果:
1 | def hello(): |
五、插入图片与附件
使用全站图片目录
本站当前未启用每篇文章独立的资源目录,日常可以把图片放在 source/images/ 下。例如文件位置是:
1 | source/images/demo.png |
文章中使用:
1 |  |
上面的图片名称是示例,实际使用前必须放入对应文件。网页链接使用 /,不使用 Windows 路径中的 \;不要写 C:\... 这样的本机文件路径。
本站当前发布在域名根路径,/images/... 可以直接使用。如果以后迁移到带子目录的网站地址,需要重新核对资源路径。
附件
把附件放在 source/downloads/,例如 source/downloads/example.pdf,再引用:
1 | [下载附件](/downloads/example.pdf) |
附件和图片一样,上传后会成为网站可访问的文件。发布前检查文件内容,不要把未准备公开的原始记录当作测试附件。
六、输入数学公式
本站已启用 MathJax。行内公式使用一对美元符号:
1 | $E = mc^2$ |
显示为 $E = mc^2$。
独立公式可以使用两对美元符号。为减少当前 Markdown 渲染器与公式语法之间的干扰,下面使用单行写法:
1 | $$\Delta G = -nFE$$ |
$$\Delta G = -nFE$$
上下标和正体化学符号示例:
1 | $\mathrm{V_2CT_x}$ |
实际显示:$\mathrm{V_2CT_x}$、$I_3^{-}$、$i_p = a v^b$。
MathJax 从 CDN 加载。网络受限或脚本尚未加载时,可能暂时看到原始公式文本。普通正文里的英文和数字使用 Times New Roman,公式则由数学排版引擎绘制。
七、先在本地预览
在博客根目录启动:
1 | hexo server |
默认打开 http://localhost:4000/。预览时保持终端运行,结束后在终端按 Ctrl+C 停止服务。
如果端口已被其他程序占用,可以换一个端口:
1 | hexo server --port 4001 |
修改文章后通常可以刷新预览页面。修改 _config.yml 后建议重启预览服务;修改主题样式但没有看到结果时,可以停止服务,再清理和重新生成。
发布前至少检查文章标题、日期、目录、粗体和斜体、图片、公式、链接,以及手机宽度下的排版。也要切换一次黑白模式,确认字体、字号和位置一致。
八、生成并发布到 GitHub Pages
本站地址为 https://blog.lifan.icu/,完整源码保存在 main 分支。推送后,Vercel 和 GitHub Actions 分别构建并发布生产网站。部署配置的核心部分为:
1 | url: https://blog.lifan.icu |
本站使用自定义生产部署脚本,发布前先提交源码:
1 | git add . |
GitHub 账号必须有仓库写入权限,本机 Git 需要完成登录。
日常更新
文章检查完毕后,运行:
1 | hexo generate --deploy |
简写是 hexo g -d。这条命令先在本地生成网站,再推送已提交的 main 分支;线上平台会从源码重新构建。
主题或缓存出现问题时
1 | hexo clean |
hexo clean 删除生成缓存和 public,不删除 source/_posts/ 中的文章。hexo deploy 只推送已提交的源码,因此发布前必须先提交修改。
上传成功之后
Git 推送成功后,GitHub Pages 和 Vercel 还需要完成构建和发布。确认 Actions 流程成功、Vercel 生产部署就绪,再打开线上网站检查。本站只使用 main 分支,不生成预览部署。
本站地址:https://blog.lifan.icu/。
九、草稿与独立页面
草稿
1 | hexo new draft "待完善的记录" |
草稿放在 source/_drafts/。完成后,将对应草稿发布为文章:
1 | hexo publish "待完善的记录" |
hexo publish 将草稿转为文章;上传到 GitHub 仍需要后面的生成与部署命令。
独立页面
1 | hexo new page "notes" |
它会创建页面目录及 index.md。独立页面适合关于、说明或固定资料页;生成页面后,还需要按实际需求把对应地址加入主题导航。
十、常见问题
| 现象 | 优先检查 |
|---|---|
找不到 hexo 命令 |
全局 hexo-cli 是否安装,终端是否能找到 npm 命令目录 |
| 提示不是 Hexo 项目 | 是否进入包含 _config.yml 的博客根目录 |
| 配置解析失败 | YAML 缩进、冒号、引号和 Tab 是否有误 |
| 线上内容没有更新 | 是否重新生成,Git 推送和 Pages 发布是否都成功 |
| 图片打不开 | 文件是否存在,大小写、路径和后缀是否一致 |
| 字体暂时不同 | 本地字体是否安装,CDN 字体切片是否成功加载 |
| 粗体或斜体没有变化 | 是否把语法放进反引号或代码块,强调标记是否完整 |
| 公式只显示源码 | MathJax 是否加载,公式定界符是否成对,Markdown 是否改写了公式 |
| 主题修改后仍显示旧样式 | 停止预览,清理并重新生成,随后刷新浏览器缓存 |
本站优先使用本机字体,缺少时先显示系统字体,再加载对应的切片 CDN。Times New Roman 不存在时,西文 CDN 使用 Tinos 兼容回退;这不代表它就是 Times New Roman 原版。切换黑白模式不改变文字的字号与排版。
十一、一次完整的更新流程
- 在博客根目录新建文章,或编辑已有
.md文件。 - 填写文章信息,整理正文、图片和附件。
- 启动本地预览,检查内容和手机排版。
- 运行
hexo generate --deploy。 - 确认 GitHub Pages 发布成功,再检查线上页面。
日常写作只需要记住两个常用命令:预览用 hexo server,更新网站用 hexo generate --deploy。遇到主题缓存问题,再使用清理、生成、部署三步流程。