jekyll-compose:高效管理 Jekyll 文章的利器
前言
如果经常手动创建 _posts/ 下的文件、复制 Front Matter,jekyll-compose 可以省去这些重复操作。它提供创建草稿、发布和重命名等 Jekyll 命令。下面按实际写作流程介绍用法;具体命令以 项目说明 为准。
安装
在项目根目录的 Gemfile 中添加:
1
gem 'jekyll-compose', group: [:jekyll_plugins]
然后执行:
1
bundle install
验证安装是否成功:
1
bundle exec jekyll help
如果输出中出现 draft、post、publish、unpublish、rename、compose 等子命令,说明安装完成。
核心命令一览
| 命令 | 作用 | 示例 |
|---|---|---|
jekyll draft "标题" | 创建草稿到 _drafts/ | jekyll draft "Redis缓存策略" |
jekyll post "标题" | 直接创建文章到 _posts/ | jekyll post "Docker入门指南" |
jekyll publish <草稿路径> | 将草稿发布为文章 | jekyll publish _drafts/redis缓存策略.md |
jekyll unpublish <文章路径> | 将文章退回草稿 | jekyll unpublish _posts/2026-03-05-redis缓存策略.md |
jekyll page "标题" | 创建新页面 | jekyll page "关于我" |
jekyll rename <路径> "新标题" | 重命名文章或草稿 | jekyll rename _posts/2026-03-05-旧标题.md "新标题" |
jekyll compose "标题" | 通用创建(默认为文章) | jekyll compose "Nginx配置详解" |
所有命令前需加
bundle exec,例如bundle exec jekyll post "标题"。
推荐工作流:草稿 → 发布
如果一篇文章还要反复修改,可以先写草稿,再决定何时发布:
第一步:创建草稿
1
bundle exec jekyll draft "Kubernetes Pod 生命周期详解"
这会在 _drafts/ 目录生成草稿文件,并写入基础 Front Matter。实际文件名以命令输出为准。
第二步:本地预览草稿
1
bundle exec jekyll serve --drafts
加上 --drafts 参数后,草稿会以当天日期出现在站点中,方便预览效果。
第三步:写完后发布
1
bundle exec jekyll publish _drafts/kubernetes-pod-生命周期详解.md
插件会自动:
- 在文件名前加上当天日期(如
2026-03-05-kubernetes-pod-生命周期详解.md) - 将文件从
_drafts/移动到_posts/ - 在 Front Matter 中添加
date字段
需要撤回?
1
bundle exec jekyll unpublish _posts/2026-03-05-kubernetes-pod-生命周期详解.md
文件会被移回 _drafts/,日期前缀也会被去掉。
自定义 Front Matter 模板
这是 jekyll-compose 最实用的功能之一。在 _config.yml 中添加以下配置,每次创建文章/草稿时会自动填充你定义的 Front Matter:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
jekyll_compose:
default_front_matter:
posts:
description:
categories: []
tags: []
math: false
mermaid: false
drafts:
description:
categories: []
tags: []
math: false
mermaid: false
配置后,执行 jekyll post "测试" 生成的文件内容如下:
1
2
3
4
5
6
7
8
9
10
---
layout: post
title: 测试
date: 2026-03-05 10:00:00 +0800
description:
categories: []
tags: []
math: false
mermaid: false
---
如果使用的主题(如 Chirpy)已有默认 layout,可以不在模板中写
layout。
创建后自动打开编辑器
方式一:配置 _config.yml
1
2
jekyll_compose:
auto_open: true
方式二:设置环境变量
告诉 jekyll-compose 用哪个编辑器打开:
Windows PowerShell:
1
2
3
4
5
# 当前会话生效
$env:JEKYLL_EDITOR = "code"
# 永久写入用户环境变量
[Environment]::SetEnvironmentVariable("JEKYLL_EDITOR", "code", "User")
Linux / macOS:
1
2
# 写入 ~/.bashrc 或 ~/.zshrc
export JEKYLL_EDITOR="code"
配置完成后,每次创建文章时 VS Code 会自动打开对应文件。
自定义文件名格式
如果创建后想调整文章标题和文件名,可以使用 rename 命令:
1
2
# 创建后觉得文件名太长,重命名
bundle exec jekyll rename _posts/2026-03-05-kubernetes-pod-生命周期详解.md "K8s Pod 生命周期"
重命名会同时更新文件名和 Front Matter 中的 title。
实战演示
完整演示从创建到发布的全流程:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 1. 创建草稿
bundle exec jekyll draft "Git 常用命令速查表"
# => _drafts/git-常用命令速查表.md
# 2. 编辑内容(VS Code 自动打开)
# ... 编写文章 ...
# 3. 本地预览
bundle exec jekyll serve --drafts
# 4. 满意后发布
bundle exec jekyll publish _drafts/git-常用命令速查表.md
# => _posts/2026-03-05-git-常用命令速查表.md
# 5. 发现标题需要调整
bundle exec jekyll rename _posts/2026-03-05-git-常用命令速查表.md "Git 命令速查手册"
# => _posts/2026-03-05-git-命令速查手册.md
常见问题
Q:为什么执行命令提示找不到 draft 子命令?
确保 Gemfile 中将插件放在 jekyll_plugins 组内,并且已经执行过 bundle install:
1
gem 'jekyll-compose', group: [:jekyll_plugins]
Q:发布时能否指定日期?
可以,使用 --date 参数:
1
bundle exec jekyll publish _drafts/文章.md --date "2026-01-01"
Q:能和 GitHub Pages 一起使用吗?
jekyll-compose 只是本地命令行工具,它帮你生成和管理文件,不参与站点构建。所以不管你用 GitHub Pages 还是其他方式部署,都完全兼容。
总结
| 场景 | 以前 | 用 jekyll-compose |
|---|---|---|
| 创建文章 | 手动建文件、写日期前缀、复制 Front Matter | jekyll post "标题" 一步到位 |
| 管理草稿 | 手动在文件夹间移动、改文件名 | draft → publish → unpublish |
| 重命名 | 改文件名 + 改 Front Matter 中的 title | jekyll rename 自动同步 |
| Front Matter | 每次复制粘贴模板 | 配置一次,自动生成 |
如果经常创建草稿、改标题或手动填写 Front Matter,jekyll-compose 值得试试;只偶尔写一篇文章,手动创建文件也完全够用。