本文首发在语雀,自动同步更新至CC 的部落格

延迟发布

  • _config.yml( Hexo 配置文件)关闭显示未来文章(即将future配置为 false ,这样如果你手动指定日期晚于当前时间,就不会生成,当你想要发布文章时修改一下发布时间,或者到了预定发布的时间时重新部署一次即可展示文章
# Writing
new_post_name: :title.md
default_layout: post
auto_spacing: true
titlecase: false
external_link:
enable: true
field: site
exclude: ""
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true

发布状态

  • 在文章 Markdown 文件Front-Matter部分配置published参数
---
published: false
---

即可达到与上面一样的效果,这样当我们认为文章可以公开时,再设为true或者删掉这个配置即可,同样由于是静态博客,仍需要重新部署一次才会显示

首页隐藏

  • 前两种方式如果你的源码仓库闭源的话,是完全隐藏的,只有你知道,但是有时候我们只想在首页隐藏部分文章,而不是不公开文章,我们需要更换首页生成插件,执行以下命令
$ npm uninstall hexo-generator-index
$ npm install hexo-generator-indexed

隐藏文章 ,在文章的 Front-matter 中增加一个 hide 参数用来隐藏

---
title: example
hide: true
---
隐藏特定分类中的文章,在 Hexo 的 `_config.yml` 中可以通过 `hide_categories` 选项设置隐藏某个分类下的文章,例如:
hide_categories:
- categorie1
- categorie2

存为草稿

对于我来说,由于我使用的是语雀,在未发布前,都储存在草稿箱所以不会有这个问题,而我发布后文章会同步到源代码仓库posts分支;但总有小伙伴那么几篇文章不想让别人看到,所以水了这篇文章;并且生成后的代码仓库大多数情况下是公开的,所以还是推荐没写完就不要发布了,留在草稿箱,即使你指定一个只有你自己知道的路径,虽然一般人不会闲得慌去看你仓库,但并没有达到不想公开的效果,因此可以在博客目录.gitignore文件添加忽略草稿目录

.DS_Store
Thumbs.db
db.json
hexo.bat
yuque.json
*.log
public
node_modules
.deploy*
.nojekyll
source/_posts/语雀
themes/butterfly/.git
source/_drafts

当然在使用草稿功能前,注意检查_config.ymlHexo 配置文件是否关闭显示(渲染)草稿

render_drafts: false

此外,在最开始的HexoWriting 部分配置项中我们知道default_layout: post,即默认布局为post文章类别,又因为new可以简写为n,因此默认情况下以下 3 条新建文章命令等效

$ hexo new post <title>

$ hexo new <title>

$ hexo n <title>

同理,在 Hexo 官方文档中也有提到,如果要新建草稿,可使用如下命令

$ hexo new draft <title>

$ hexo n draft <title>

当然我们还要知道默认的 layout 模板文件存在根目录/scaffolds下(我们可以自行新建或修改模板,这里不做展开),草稿存在根目录/source/_drafts下,文章存在根目录/source/_postsimage.png 刚刚提到了 Hexo 的一种特殊布局:draft,这种布局在建立时会被保存到 source/_drafts文件夹,您可通过publish 命令将草稿移动到 source/_posts 文件夹,该命令的使用方式与 new 十分类似,您也可在命令中指定 layout 来指定布局。

$ hexo publish [layout] <title>

那么如果我们要发布草稿即可使用如下命令

$ hexo publish <title>

$ hexo p <title>

草稿默认不会显示在页面中,您可在执行时加上 --draft参数,或是把 render_drafts 参数设为 true 来预览草稿。

$ hexo s --draft
$ hexo g --draft

若日后想将正式文章转为为草稿,只需手动将文章从 source/_posts目录移动到 source/_drafts目录即可。

source

资源文件夹,除了模板以外的 Asset,例如 CSS、JavaScript 文件等,都应该放在这个文件夹中。文件或文件夹开头名称为 _(下划线线)或隐藏的文件会被忽略。如果文件可以被渲染的话,会经过解析然后储存到 public 文件夹,否则会直接拷贝到 public 文件夹。

资源文件夹是存放用户资源的地方。除 _posts 文件夹之外,开头命名为 _ (下划线)的文件 / 文件夹和隐藏的文件将会被忽略。Markdown 和 HTML 文件会被解析并放到 public 文件夹,而其他文件会被拷贝过去。

官方其实考虑到这个问题,事实上我们在_post(文章)文件夹内可以按照类别来存放文章,这样做既方便我们查找,也能形成系统性文档,所以可以建立不同的子文件夹存放不同类别的文章,说到这可能你想到了,如果我建立一个文件夹_还未准备好发布的文章,或者把文件夹设置为隐藏,那这样也能跳过渲染实现和草稿一样的效果。

题外话

而对于加密这个操作,我觉得是没有必要了,但也有对应的使用场景,各取所需吧。