加载中...

加载中...

Hexo 简介

Hexo 是什么

Hexo 是一个快速、简洁且强大的静态博客框架,基于 Node.js 驱动。你只需使用 Markdown 写作,Hexo 就会在几秒内生成纯静态的 HTML 页面,无需数据库、无需 PHP 等后端环境,任何静态托管(GitHub Pages、Vercel、Nginx、对象存储等)都能直接承载。

相比动态博客系统,Hexo 的优势:

  • 快:静态页面,无需服务端渲染,CDN 加速友好
  • 简单:Markdown 写作,Git 版本管理,一条命令部署
  • 强大:海量插件与主题生态(本教程即基于深度定制的 matery 主题)
  • 安全:无数据库、无运行时漏洞面,天然抗攻击

本博客(夜法之书)即基于 Hexo 8.1.2 + matery 主题构建,生产环境由 Vercel 托管。

环境要求

组件版本要求说明
Node.js>= 20Hexo 8.x 运行环境(本站开发使用 LTS 版本;package.json 未声明 engines,实际运行要求 Node >= 20)
npm随 Node 附带(项目锁定 npm@9)随 Node.js 安装,用于安装 Hexo 与插件
Git任意现代版本拉取主题、部署到 Git 托管平台

验证环境

输出:两行版本号,第二行末带 npm 自带的更新提示(有新版时才出现)。只要 Node 主版本 ≥ 20、npm 主版本为 9,环境即合格;报 command not found 说明对应工具没装或不在 PATH。

v20.19.4
9.9.4

对应命令:

node -v    # v20.x 之类
npm -v     # 9.x(项目 packageManager 锁定 npm@9)

常用命令

命令作用
hexo init [folder]新建站点。等价于克隆 hexo-starter 并安装依赖
hexo new post <标题>新建文章到 source/_posts/(标题含空格需加引号)
hexo new page <名称>新建独立页面(如 about、tags)
hexo new draft <标题>新建草稿到 source/_drafts/
hexo publish <标题>将草稿发布为正式文章
hexo generate生成静态文件到 public/(-w 监视改动,-d 生成后部署)
hexo server启动本地预览,默认 http://localhost:4000/(-p 指定端口)
hexo deploy部署网站(推送至配置的 Git 仓库,-g 部署前先生成)
hexo clean清除缓存(db.json)与生成目录(public),改配置/插件后建议执行
hexo --safe安全模式,不加载插件与脚本,排查插件冲突时使用
hexo server --draft预览时显示草稿
hexo version查看 Hexo 版本

每条命令能看到什么

下面把上表逐条展开成「输出 → 对应命令」:先看终端/文件系统给出的反馈,再照抄命令。

① 新建站点

输出:终端依次打印 INFO Cloning hexo-starter ...、INFO Install dependencies,结束时提示 INFO Start blogging with Hexo!;当前目录多出 my-blog/,里面有 _config.yml、package.json、source/、themes/。

对应命令:

hexo init my-blog
cd my-blog
npm install

② 新建文章

输出:终端输出 INFO Created: ~/my-blog/source/_posts/文章标题.md;打开该文件能看到 title / date / tags 等 front-matter 已按 scaffolds/post.md 预填。

对应命令:

hexo new post "文章标题"

③ 新建独立页面

输出:终端输出 INFO Created: ~/my-blog/source/about/index.md,文件里只有 title 和 date(layout 需要手工补)。

对应命令:

hexo new page about

④ 新建草稿

输出:终端输出 INFO Created: ~/my-blog/source/_drafts/未完成的想法.md;默认不参与生成,首页看不到它。

对应命令:

hexo new draft "未完成的想法"

⑤ 发布草稿

输出:终端输出 INFO Published: ...source/_posts/未完成的想法.md;文件从 _drafts/ 移到 _posts/,date 被写入当前时间。

对应命令:

hexo publish "未完成的想法"

⑥ 生成静态站点

输出:终端逐条列出 INFO Generated: index.html、INFO Generated: posts/xxx/index.html 等,最后一行 INFO Files generated in 3.2s(耗时因机器而异);public/ 目录出现完整 HTML 站点。

对应命令:

hexo generate

⑦ 本地预览

输出:终端打印 Hexo is running at http://localhost:4000/ . Press Ctrl+C to stop.;浏览器打开该地址能看到首页。改文件后浏览器自动刷新。

对应命令:

hexo server

⑧ 部署

输出:终端输出 INFO Deploying: git、INFO Clearing .deploy_git folder...,末尾 INFO Deploy done: git;对应托管平台开始构建。

对应命令:

hexo deploy

⑨ 清理缓存

输出:终端输出 INFO Deleted database.、INFO Deleted public folder.;db.json 与 public/ 消失,"改了不生效"的问题多由此解决。

对应命令:

hexo clean

⑩ 安全模式

输出:站点仍能启动,但主题脚本、自定义 tag 插件全部不加载(页面明显"素"),用于判断故障是否来自插件。

对应命令:

hexo --safe server

⑪ 预览草稿

输出:与普通预览一样给出 http://localhost:4000/,区别是首页列表里出现了 _drafts/ 中的文章。

对应命令:

hexo server --draft

⑫ 查看版本

输出:一行 hexo: 8.1.2 加 os、node、npm 等环境信息,报问题时可整段贴出。

对应命令:

hexo version

常用组合(本项目 package.json 脚本)

输出:npm run build 结束时 public/ 就绪并生成 pagefind 搜索索引;npm run clean 清空产物;npm run server 起在 http://localhost:4000/;npm run deploy 推送到部署仓库。

对应命令:

npm run build    # hexo generate(另含 pagefind 搜索索引)
npm run clean    # hexo clean
npm run server   # hexo server
npm run deploy   # hexo deploy

工作流程

写作(Markdown) → 生成(hexo generate) → 部署(hexo deploy)
  1. 写作:hexo new post "文章标题" 创建文章,用 Markdown 编辑 source/_posts/ 下的文件

    输出:source/_posts/文章标题.md 出现,front-matter 已填好。对应命令:hexo new post "文章标题"

  2. 预览:hexo server 在本地检查效果(默认 localhost:4000)

    输出:浏览器里看到与线上同构的页面,保存文件即热更新。对应命令:hexo server

  3. 生成:hexo generate 将文章渲染为 public/ 静态文件

    输出:public/index.html 与 public/posts/<abbrlink>/index.html 等产物。对应命令:hexo generate

  4. 部署:hexo deploy 推送至 Git 仓库;或推到 GitHub 由 Vercel 等平台自动构建

    输出:终端 INFO Deploy done: git,托管平台开始构建。对应命令:hexo deploy

提示:修改 _config.yml 或主题配置后,务必先 hexo clean 再 hexo generate,否则可能命中缓存导致改动不生效。

下一步

评论
数据加载中 ...