FilesHook
什么是 FilesHook?
FilesHook
其实就是一串由你自定义的命令行,在当前目录设置窗
内可见。
当设定 FilesHook 的命令之后,再点击同步的命令按钮之后,MarkEditor 会调用预设的命令,它的基本的工作原理很简单: 在文件夹完成一次同步之后,检测到文件的变动,触发相应的脚本命令。
注意: 在设定过FilesHook
的文件夹内,即使没有绑定第三方云,也是可以执行同步操作来触发 FilesHook。
FilesHook 是 MarkEditor 的一个底层调用接口,基本上可以认为是面向程序员的一个功能。它是 MarkEditor 对外开放的最通用的接口,你可以通过 FilesHook 很简单往 Jekyll 等静态博客系统里发布内容;当有有更进一步的自定义需求时,也可以通过自写程序脚本来实现。
在文件目录($root$)下,还有个sync_changes.log
: 这个文件存储了JSON 格式的信息,里面表示当前同步的时候,新增、删除的文件、文件夹。如果进一步运行脚本来对应 FilesHook,可以从这个文件内获取相应的信息再行处理。
注意:
- 如果文件夹没有关联某个具体的云端,但是设置了 FilesHook,那么
同步命令
仍然是可以运行,并最终触发 FilesHook。 - 如果文件夹已经关联了某个云端,并且设置了 FilesHook,则同步命令,最终在同步完成后,也会触发 FilesHook。
- 不论 FilesHook 内的脚本命令是否运行成功,点击
立即同步
后,即使脚本失败,也会认定同步是成功的。如果在调试 FilesHook 脚本阶段出错的时候,需要手工重置同步
,重新来过。 - Windows版本中,由于(非Unix)系统原因,对于FilesHook的支持并不友好,并不保证脚本的调用能正常运行。一般建议不要使用
&
符进行连续调用,而是自行增加一个运行的脚本(比如某个bat文件)来处理,或者直接触发其它脚本对sync_changes.log
进行处理;但另外请注意,即使如此,也不能保证ME内的命令调用能正常运行,以实际情况为准。 - 某些情况,命令可以在Term、终端内运行,被FilesHook调用时却出现错误,可能是由于环境变量限制、缺失产生的,尝试输入命令对应的实际路径或许能解决问题。但另外请注意,即使如此,也不能保证ME内的命令调用能正常运行,以实际情况为准。