利用Shell Commands在Obsidian中预览和发布Hexo文章
前言
由于我在构建 Hexo+Obsidian 写作工作流时,采用的是 hexo 项目单独存放,只将 _posts
目录通过 ln -s
软链接方式挂载到 obsidian 中,因此网上的各种工作流方案都不适合:
- 如 Hexo + Obsidian + Git 完美的博客部署与编辑方案 所说的,对 hexo 项目新建 vault,使用 Obsidian Git 插件管理推送、发布等任务。此种方案我有两个原因拒绝,一是我不希望把博客写作分离出我的常用 vault,二是我要保证绝不引入诸如
node_modules
、.git
等多文件目录来污染 obsidian 的索引和效率。 - 在 obsidian 中写作,利用 terminal 或者 vscode 单独进行推送和发布任务,适合前期建站期间需要大量调试,使用 vscode 进行编辑是方便的。后期稳定后,追求的是写作内容,工作流相对稳定,所以尽可能的在一个 app 中完成全部流程是最好的。
- obsidian 中的
Hexo Auto Updater
插件基本原理也是通过软链接挂载,但是挂载整盘后让用户选择 hexo 项目目录,然后在 obsidian 中发现文章有改动便会自动触发推送。但我在试用的时候在挂载全盘后的权限请求和索引重建过程让 obsidian 直接卡死,不得已从插件目录中删除后,重启 obsidian 才行。另一点,文章改动就触发自动推送有点过于频繁了,还没有选项可调,我的发布服务使用的 cloudflare,并不想如此频繁的发布。这种方案问题太多,不推荐使用。 - 另一种方案 在Obsidian中写Hexo Blog 采用的是 rsync 来同步 obsidian 和 hexo 的文章,这样做的问题是可能会遇到版本冲突(两边修改,忘记同步)、文件丢失(带着 --delete 可能会导致意外)、磁盘重复占用等问题,而我采用的软链接方式,完美避开这几种问题。虽然该篇文章中同步方案不适合,但是提到的一个插件给了我灵感,
Shell Commands
可以在 obsidian 中执行脚本,完美避开了Hexo Auto Updater
插件挂载全盘后选择目录的巨大问题。但是要注意不要按这篇文章进行插件设置,因为版本太老,改动了许多内容,请以我下面文中描述进行配置。
最终方案
使用 Obsidian 插件 Shell Commands
配合自己写脚本,来实现在 obsidian 中完成预览、推送流程。
进而打通了只在 obsidian 中就可以完成从写作到发布的透明化流程,完全不用手动同步文章、切换 vault、手动执行 hexo 命令、手动 git 等。
具体步骤
安装 Shell Commands 插件
打开 obsidian 设置
->第三方插件
-> 浏览
-> 输入 Shell commands
-> 安装
后 启用
-> 选项
。我现在的安装版本是 0.22.0
。
配置 Shell Commands 插件
配置环境变量
由于通过该插件启动的是个只带有少量默认 PATH 的虚拟 shell,因此在执行 hexo server
时,可能会提示 command not found
,因此需要将本机中的环境变量加入到插件的环境变量中,具体步骤如下:
- 先查询本机环境变量:
echo $PATH
,复制输出的内容。 - 打开插件设置,选择 Environments,将内容粘贴到下方对应本机系统的 additions 中。
配置脚本
打开插件设置,选择 Shell Commands 选项卡,点击 New Shell Command
,依次填写下面脚本命令,可以通过右侧齿轮图标修改 Aliase
名称。我这里一共写了三个脚本,分别是:
hexo-preview
预览:相当于执行 hexo server 后自动打开网页。
hexo-stop
停止 server:提供一个手动停止 hexo 服务器的功能。
hexo-deploy
发布:相当于 git push 功能。
至此配置完成,如图所示:
使用
呼出 obsidian 的命令行,输入 hexo-preview
,执行命令。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 天澄拾光!
评论
ArtalkGitalk