hexo 学习 0018:hexo 写作

在 Hexo 中写作,核心在于理解“布局(Layout)”这一概念。你可以把布局想象成文章的“出生证明”,它决定了这篇文章刚创建时会被放在哪个文件夹,以及它默认的身份是正式文章、独立页面还是草稿。

核心命令:创建与发布

要开始写作,你最常用的两个命令是 newpublish

1. 创建新内容 (hexo new)

这是创建文章的入口。命令格式如下:

1
hexo new [layout] <title>
  • [layout]:可选参数,指定文章的布局类型。如果不填,默认使用 post
  • <title>:必填参数,文章的标题。

常见用法示例:

  • 创建一篇默认的博客文章(布局为 post):

    1
    hexo new "我的第一篇博客"

    这条命令会在 source/_posts 目录下生成一个文件。

  • 创建一个独立页面(布局为 page):

    1
    hexo new page "about"

    这条命令会在 source 根目录下生成文件,通常用于“关于我”、“友情链接”等单页。

  • 创建一篇草稿(布局为 draft):

    1
    hexo new draft "未完成的构思"

    这条命令会将文件保存在 source/_drafts 目录,不会在生成网站时公开显示。

2. 发布草稿 (hexo publish)

当你完成了草稿的撰写,想将其转为正式文章时,使用 publish 命令。它的工作方式与 new 类似,但会将文件从 _drafts 移动到 _posts

1
hexo publish [layout] <title>

示例:
将之前创建的草稿正式发布:

1
hexo publish draft "未完成的构思"

执行后,文件会从 source/_drafts 移至 source/_posts,并在下次生成网站时可见。

深入理解布局 (Layout)

Hexo 预置了三种核心布局,它们对应不同的存储路径和用途:

布局名称 存储路径 用途说明
post source/_posts 默认布局。用于常规的博客文章,按时间排序展示。
page source 用于独立页面,如“关于”、“归档”等,不参与时间流排序。
draft source/_drafts 用于未完成的草稿。默认情况下,生成网站时会忽略此目录下的文件。

概念辨析:Draft 与 Post 的区别
这就好比作家写书时的“手稿”与“出版书”。draft 布局下的文章是私有的手稿,只有你在本地预览时通过特定参数才能看到;而 post 布局下的文章则是正式出版物,会对所有访客展示。

如果你不希望某篇文章被主题模板处理(例如只想输出纯文本),可以在该文章的 Front-matter(文件头部的元数据区域)中设置 layout: false

配置文件详解 (_config.yml)

你可以通过编辑站点根目录下的 _config.yml 文件来定制新建文章的行为。

1. 修改默认布局 (default_layout)
如果你希望每次输入 hexo new 时默认创建的是 page 而不是 post,可以修改此项:

1
default_layout: page

2. 自定义文件名格式 (new_post_name)
默认情况下,Hexo 使用标题作为文件名。但你可以通过占位符让文件名包含日期等信息,避免标题过长或重复。

配置示例:

1
new_post_name: :year-:month-:day-:title.md

这样创建标题为 “Hello World” 的文章时,文件名会自动变为 2026-03-09-hello-world.md

可用占位符说明:

占位符 描述 示例值
:title 文章标题(小写,空格变短横线) my-first-post
:year 创建年份 2026
:month 创建月份(带前导零) 03
:i_month 创建月份(无前导零) 3
:day 创建日期(带前导零) 09
:i_day 创建日期(无前导零) 9

3. 控制草稿显示 (render_drafts)
默认情况下,draft 布局的文章在生成网站时是不可见的。如果你想在本地预览时查看草稿效果,有两种方法:

  • 方法一(临时): 运行服务器命令时添加 --draft 参数。
    1
    hexo server --draft
  • 方法二(永久):_config.yml 中开启配置。
    1
    render_drafts: true

高级技巧:脚手架 (Scaffolds)

当你执行 hexo new 时,Hexo 并不是凭空创建文件,而是基于 scaffolds 文件夹中的模板文件进行复制。这就像是用模具制作饼干,模具的形状决定了饼干的初始样子。

工作原理:
如果你执行 hexo new photo "My Gallery",Hexo 会去 scaffolds 文件夹寻找 photo.md 文件。如果找到,就以其内容为模板创建新文章;如果找不到,则使用默认模板。

你可以在脚手架模板文件中使用以下变量,Hexo 会在创建时自动替换它们:

  • {{ layout }}:自动填入当前的布局名称(如 post, page)。
  • {{ title }}:自动填入你命令中指定的标题。
  • {{ date }}:自动填入当前的创建日期。

示例场景:
假设你想让所有新建的 photo 类型文章自动包含特定的标签和分类,你可以创建 scaffolds/photo.md,内容如下:

1
2
3
4
5
6
7
8
9
---
title: {{ title }}
date: {{ date }}
tags:
- photography
- gallery
layout: {{ layout }}
---
在此处开始编写你的摄影作品描述...

多格式支持

Hexo 的灵活性还体现在对多种写作格式的支持上。虽然 Markdown (.md) 是最常用的,但只要安装了相应的渲染插件,你可以使用任何格式。

  • 默认支持:Hexo 默认安装了 Markdown 渲染器,所以 .md 文件可以直接使用。
  • 扩展支持
    • 如果你安装了 hexo-renderer-ejs,就可以使用 .ejs 后缀写文章。
    • 如果你安装了 hexo-renderer-pug,就可以使用 .pug 后缀。

操作方法:
只需将文章文件的扩展名改为你想要的格式(例如从 article.md 改为 article.ejs),Hexo 就会自动调用对应的渲染插件来处理该文件。这使得 Hexo 不仅能写博客,还能作为灵活的内容生成工具。