乐趣区

关于hexo:Hexo-Obsidian-Git-完美的博客部署与编辑方案

1. 前言

在之前的文章《Hexo 疾速搭建指南》中,重点解说了如何搭建以及部署博客。然而在前期写博客的过程中,有可能遇到很多麻烦,比方:

  • 我不想手动保护文章的 Categorys,我想以文件目录的模式治理文章分类
  • VSCode 编写 Markdown 文件不爽,我想用其余的编辑器来写 Markdown
  • hexo new 指令生成的模板太拉了,我不想用
  • 我想把我的 markdown 文档同步到云平台上,不便我的其余设施即时查看

那么这篇文章就会教你应用最舒服的姿态来前期保护你的博客,缩小心智累赘与解决各种不爽的中央。

2. 更好的文章治理计划

2.1 文章以目录分类

当咱们写好一篇文章后,依照 hexo 的默认配置,咱们须要将其放在 source/_post 目录下,等工夫长了之后,_post 目录下的文章就会变得横七竖八,无奈让咱们疾速的 review 到一篇文章。

那么最好的解决方案就是咱们在创立文章的时候以 文章分类 作为文件夹创立咱们的文章,比方:

.
└── source
    └── _post
        ├── 前端
        │   ├── Javascript
        │   │   └── Javascript 原型链机制.md
        │   └── 浏览器
        │       └── 浏览器性能优化.md
        └── 后盾
            ├── GoLang
            │   └── go 语言简介.md
            └── Java
                └── Spring MVC 疾速入门.md

2.2 依据文件目录主动生成 categories 信息

尽管咱们把文章放的东倒西歪了,然而每个文章里的 categorys 字段还是要咱们手动本人保护的,比方在 source/_post/ 前端 /Javascript/Javascript 原型链机制.md 文件中,咱们要通过手写 categories 来让 hexo 晓得这篇文章被放在 前端 -Javascript 分类下:

---
title: Javascript 原型链机制
categories:
  - 前端
  - Javascript
date: 2022-06-05 12:06:47
---

这里是注释 

为了省去手动保护 categorys 字段的这个问题,咱们能够应用 hexo-auto-category 这个插件。这个插件在 Hexo 进行 build 的时候会去主动依据文章目录状况来主动修改文章的 categories 信息,更具体的局部能够看作者的文章。

除此之外最好批改一下 _config.yml 中的两处默认配置:

# 批改 permalink 让你的文章链接更加敌对,并且有益于 SEO
permalink: :year/:month/:hash.html

# 规定你的新文章在 _post 目录下是以 cateory 
new_post_name: :category/:title

2.3 提交代码时主动生成新文章的 categories

然而这里有一个问题,就是只有 hexo 在执行 hexo generate 或者 hexo server 时候才会去触发 categories 的生成,那么每次咱们创立文章都要经验这样的工作流:

  1. 创立分类目录,写文章,文件名举荐与文章题目统一(不必关怀 categories 写什么);
  2. 填写 titledatetag 等元信息(这个文章后续再探讨如何省去这一步);
  3. 执行 npx hexo generate 在构建博客的时候触发 hexo-auto-category 插件的主动改正 categories 性能;
  4. 查看文章中的 categories 是否正确;
  5. 增加 git 工作区变更,并提交并推送代码到 github。

为了简化这些工作,咱们能够应用 git hook,在咱们每次执行 commit 前都主动运行 npx hexo generate 触发主动生成 categories 的行为,并将生成后的变更主动增加到本次提交中,而后一起 push 到 github 下来。这里能够应用 husky 来很不便的设置这样一个 git hook。

GitHook 能够在执行代码的 commit、push、rebase 等阶段前触发,做一些前置行为,比方在每次提交代码时候执行一段 shell 脚本,来做一些代码查看或者告诉 ci 等操作。

Husky 采纳了更简略的一种形式,让治理 GitHook 更加现代化

对于 Husky 的应用能够参考我之前的文章《应用 husky 每次提交时进行代码查看》

你能够依照如下步骤疾速实现设置:

  1. 装置 huksy:npm install husky --save-dev
  2. 执行 huksy 初始化指令:npx husky install
  3. package.json 中的 scripts 中写入:"prepare": "husky install"
  4. 在生成的 .husky 目录创立 pre-commit 文件(有的话就不必创立),并写入以下内容:
#!/usr/bin/env sh
. "$(dirname --"$0")/_/husky.sh"

npx hexo generate && git add .

如果提交代码的时候,终端呈现相似的构建过程,就阐明由 husky 创立的 git hook 失效了:

这样你新建一篇博客的工作流就简化为:

  1. 创立分类目录,写文章;
  2. 填写 titledatetag 等元信息;
  3. 增加 git 工作区变更,并提交并推送代码到 github。

这样就解决了令人头疼的文章分类问题~

3. 应用 Obsidian 来编写和治理文章

Obsidian 是目前个人感觉应用起来最舒服的基于 Markdown 的笔记管理工具,益处不多言,用了就晓得。

3.1 将 Hexo 我的项目导入 Obsidian

这一步很简略,关上 Obsidian 后,它会默认关上上次的存储库,这个时候你须要点击左下角的 关上其余库 icon 来调出欢送面板:

而后在欢送面板关上你的 Hexo 我的项目即可:

因为 hexo 的文章只存在于 source 目录下,咱们须要让 Obsidian 疏忽其余文件的内容以优化性能以及缩小不必要的搜寻后果。具体的操作是在 设置 - 文件与链接 -Exclude Files,将须要疏忽的文件增加进去(尤其是 node_modules):

同时,在你的 hexo 我的项目的 .gitignore 文件中退出如下内容:

.obsidian/workspace

.obsidian 文件自身是能够同步的,以后存储库的插件以及相干的配置都会下载在这个文件夹中,因而将其同步到 git 记录中也是十分有用的,如果你切换设施就不须要从新为以后的存储库重新配置 Obsidian 了。

3.2 应用 Obsidian 模板疾速创立文章

Obsidian 是反对创立新文件时插入模板的,这就意味着咱们能够不必反复写 Hexo 博客文的 Front-matter 局部。

Front-matter 是文件最上方以 --- 分隔的区域,用于指定个别文件的变量,举例来说:


title: Hello World
date: 2013/7/13 20:46:25

首先咱们要创立模板,咱们能够在 source 目录下创立 _obsidian 文件夹,并创立一篇 Post Template 的文章(md 文件),内容为:

---
title: {{title}}
date: {{date}}
tags: []
---

而后进入到 Obsidian 的设置面板,抉择『外围插件』,并启用『模板』性能。同时点击旁边的配置按钮,进入到模板配置的设置中,将配置信息设置为:

之后,咱们再创立新文章的时候,只须要点击侧边栏的『插入模板』按钮就能够疾速生成 Front-matter 信息:

3.3 应用 Obsidian Git 插件

咱们将 Hexo 我的项目导入到 Obsidian 之后就能够写作了,然而当写作实现之后还面临着提交代码、推送代码到 Github 上这一操作。如果咱们在用额定的终端来进行这些操作的话就太割裂了,因而咱们能够应用 Obsidian Git 插件来在 Obsidian 内就能够实现 git commit 以及 push 的操作。

Obsidian Git 属于第三方插件,要想应用它必须在设置中敞开平安模式:

而后浏览插件库,搜寻 Obsidian Git 并点击装置,装置实现之后依据本人须要的设置进行配置即可。

如果想要查看以后的工作区、暂存区,能够应用快捷键 command + p 关上命令面板,输出 open source control view 就能够关上 Git 面板了,这里的面板跟 VSCode 的面板操作相似,并且我它会主动帮你生成 commit 信息(你能够自行在 Obsidian Git 设置面板里配置默认的 commit 信息):

当然你也能够懒得看 source control view,本人间接用 command+p 关上命令面板,别离执行 git commit 命令与 git push 即可。

3.4 应用 File Tree 插件

Obsidian 很不好的一点就是会把所有的文件都列在左侧的文件列表中,然而对于咱们的 Hexo 我的项目写文章来说,咱们只会批改 _post 目录下的文件,因而咱们心愿左侧的文件列表中只显示 _post 文件夹,然而目前为止 Obsidian 并没有推出相似『聚焦』到某一文件夹内的性能。

好在 Obsidian 弱小的插件库中有一个 File Tree Alternative Plugin 第三方插件能够满足这一需要。依照 Obsidian Git 雷同的办法去下载这个第三方插件,下载实现之后咱们会发现左侧菜单呈现了一个 File Tree 的 Tab 页,点击后就能够看到文件以树形的构造出现:

咱们开展 source 文件夹,并右键 _post 文件夹,抉择 Focuse on Folder 后,左侧的文件列表中就只会显示 _post 文件夹中的内容了:

4. 应用 iCloud 同步

如果你是苹果系用户,齐全能够通过 iCloud 将 Hexo 我的项目作为 Obsidian 库同步到各个设施上,让每个设施都能够通过 Obsidian 实时查看和编辑笔记。

你只须要将你的 Hexo 我的项目复制到 iCloud 的 Obsidian 文件夹即可,然而须要留神的一点是,你我的项目的 node_modules 也同步到 iCloud 上的话就太恐怖了。为了防止这一状况,咱们须要将 node_modules 命名为 node_modules.nosync 这样就不会被 iCloud 同步。然而咱们又须要 node_modules 来让我的项目失常运行,因而咱们能够应用软链来创立一个 node_modules 软链到 node_modules.nosync 就能两全其美。简化成终端指令能够为:

# 重命名 node_modules
mv node_modules node_modules.nosync

# 创立 node_modules 软链
ln -s node_modules.nosync/ node_modules
退出移动版