Hexo 避坑指南:为什么 `hexo d` 后线上没有新文章?
Hexo 避坑指南:为什么 hexo d 后线上没有新文章?
很多 Hexo 新手都会遇到这个“灵异现象”:
明明写好了 Markdown 文章,本地跑 hexo s 预览一切正常,结果执行 hexo d 部署后,打开博客一看——文章没更新。
甚至有时候还会疑惑:为什么 hexo clean && hexo g && hexo s 能看到新文章,但 hexo d 就不行?
答案其实很简单:hexo d 默认不负责生成静态文件,它只负责搬运。
一、 原理解析:分工明确
Hexo 的核心命令职责划分得很清楚:
hexo g(Generate):厨师。
把你的 Markdown 源文件“烹饪”成静态 HTML 文件,存放在public目录下。hexo d(Deploy):快递员。
把public目录里的东西打包发送到服务器(如 GitHub Pages)。
问题出在哪?
如果你只运行hexo d,它只会把public里旧的文件发出去。除非你显式告诉它“先生成再部署”,否则它不会自动帮你执行hexo g。
这就是为什么:
- 本地
hexo s能看到:因为你之前可能运行过hexo g,public是新的。 - 线上没更新:因为
hexo d发送的可能是上一次生成的旧数据。
二、 正确的姿势
要解决这个问题,你有两种选择:
1. 组合拳(推荐)
使用带有生成参数的部署命令,一步到位:
1 | hexo g -d |
- 含义:先生成静态文件,生成完毕后立即部署。
2. 标准流程(清晰可控)
如果你习惯每一步都心里有底:
1 | hexo clean # 清理缓存和旧文件(可选,但推荐) |
三、 还有一种可能:分支配错了
如果用了 hexo g -d 还是不行,请检查 _config.yml 里的部署配置。
1 | deploy: |
检查点:
- 这里的
branch必须和你仓库在 Settings -> Pages 里设置的 Source 分支完全一致。 - 如果 Pages 设置从
main改成了gh-pages,但你配置里写的还是main,hexo d推送再多次也不会生效。
总结
hexo d≠ 自动生成。它只是搬运工。- 记住
hexo g -d,这能解决 90% 的“部署不生效”问题。 - 遇到搞不定的情况,
hexo clean永远是第一步。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 cyforkk!
评论






