我有一个运行Ubuntu的Virtual Box VM。我已经配置了一个nsf共享(当我说我,有人帮助我,所以我不太熟悉NFS共享),这样我就可以在我的Mac主机上工作并使用它的工具,如Sublime Text。
但是,当我运行以下命令时:jekyll serve --watch
当我更改代码时,网站不会自动重新生成。所以目前我必须停止服务器并再次运行命令。
修改
此外,如果我在nfs共享之外创建一个jekyll站点,它可以正常工作。只是来宾计算机上的标准普通文件夹。
答案 0 :(得分:2)
然后卸载Jekyll v 1.4.2并安装Jekyll v 1.2.1
为此,请运行这些命令,
gem uninstall jekyll
y
gem install jekyll -v 1.2.1
答案 1 :(得分:0)
无需安装较旧版本的jekyll - 您需要使用--force_polling
。说明如下:
VirtualBox不会将共享文件夹的inotify
个事件发送给访客。这是故意的:
inotify
事件,这样做效果更好。这个 会破坏对共享文件夹的监听,但在使用--force_polling
或--watch
时,可以使用build
选项和serve
强制旧行为:
jekyll serve --watch --force_polling
我在jekyll的回购中找到了相关问题:
更新:我现在开始通过VirtualBox自己开始使用jekyll,并且发现有时jekyll会通过共享文件夹观看文件时出现轻微问题:它会错误地读取文件修改,结果在未修改的文件中,应该被复制到生成的站点,与之前的版本相同,除非最后返回垃圾回车(是的,即使文件格式设置为unix行结尾)。要解决此问题,您可以使用rsync
将文件复制到虚拟硬盘驱动器,并让jekyll观察该目录:
rsync -a --recursive --delete /source/directory/ /target/directory/inside/vm/
要保持自动化,您可以将上述内容转换为脚本(或不使用)并使用watch
:
watch -n1 /path/to/rsync/script.sh
然后让jekyll观看目标目录,它工作正常。如果您这样做,--force_polling
不应该是必要的,除非您的虚拟化操作系统不以某种方式使用inotify
事件。我已经按原样离开了,但我没有遇到任何问题,尽管明确inotify
事件是处理问题的更优雅方式。
答案 2 :(得分:-1)
更新到最新版本的Jekyll,或至少Jekyll v 1.2.1