路仔小屋

快乐每一天^_^

不用插件以年月日命名文件名

aluz 2026年09月19日 编辑

方案 A:安装真实存在的 hexo-shortyear

npm install hexo-shortyear --save

安装后 new_post_name 可以写:

new_post_name: :short_year:month:day-:title.md

⚠️ 局限:只有:short_year,没有:short_month/:short_day。
同时还有之前那个老问题:自定义new_post_name后,:title取文章标题,无法直接用 hexo new slug "中文标题",想要分离英文名 + 中文标题,依旧需要脚本。

方案 B(推荐,你已经试过思路)

不用 npm 包,直接用 scripts 文件夹内的 JS 脚本,完全自己实现两位年份 + 捕获 slug,不需要依赖任何 npm 包,不受仓库是否存在影响。

方案 C:纯原生,不装任何东西

new_post_name: :year:month:day-:title.md,生成20260919-xxx.md,没有两位年份,但是最稳。

方案 C:纯原生,不装任何东西

我问:这个方案好是好,但是必须 用 --slug 吧?

✅ 结论
是的,纯原生这套配置下,想要实现:文件名后半段是英文 slug,文章标题是中文,就必须用 --slug 参数。
yaml
new_post_name: :year:month:day-:title.md
这里的占位符 :title 读取的是文章标题(引号里的中文),不再读取命令第一个参数。
两种写法对比
❌ 旧写法(现在不行)
powershell
hexo new lianyuere-short-name "不用插件以年月日命名文件名"
文件名:20260919-不用插件以年月日命名文件名.md
✅ 正确写法(要英文文件名,必须加 --slug)
powershell
hexo new "不用插件以年月日命名文件名" --slug lianyuere-short-name
front-matter 的 title: 不用插件以年月日命名文件名
文件名:20260919-lianyuere-short-name.md
补充:如果你不想敲 --slug
那就只能用 scripts 脚本方案,脚本可以还原你记忆里的旧语法:
powershell
hexo new lianyuere-short-name "不用插件以年月日命名文件名"
直接得到 260919-lianyuere-short-name.md,不用加任何参数。
简单取舍
纯原生,零脚本零依赖:稳定,但新建命令要写 --slug
scripts 脚本方案:可以沿用简短命令,但是多维护一个 js 文件
顺带一提:你的 permalink: :category/:name/ 不受影响,:name 读取 md 文件名。
你想继续用原生带--slug,还是上脚本恢复简短命令?

我回答:好吧,就用原生的吧。这个 --slug 多熟悉几次吧

👍 好选择!原生方案最省心,没有脚本、插件,以后升级 Hexo 也不容易踩坑,多敲几次很快就习惯。
记住这条标准命令(直接复制用)
powershell
hexo new "文章中文标题" --slug your-english-slug
示例:
powershell
hexo new "不用插件以年月日命名文件名" --slug lianyuere-short-name
效果:
文件名:20260919-lianyuere-short-name.md
front-matter: title: 不用插件以年月日命名文件名
小技巧简化记忆
顺序:引号放中文标题,末尾写 --slug 加英文短名
slug 只用小写英文、数字、横杠 -,不要空格、中文、特殊符号

简写:--slug 可以换成 -s,更短

powershell

hexo new "文章中文标题" -s your-english-slug

你的完整配置不变
yaml
new_post_name: :year:month:day-:title.md
permalink: :category/:name/
auto_category:
enable: true
depth: 1
overwrite: true
你的完整工作流回顾
VS Code 内置终端执行上面命令生成 md
在 VS Code 资源管理器,剪切 md,粘贴到对应的分类子文件夹
编写文章内容
预览:hexo clean && hexo g && hexo s