运行时jekyll --server
,将重建整个站点。在足够大的网站上,这需要非常长的时间。即使使用--auto
应该阻止整个站点重新生成的标志,完成的时间也相当长(对我来说 10 多秒,据报道在几分钟内)。这在编辑和预览单个页面时很不方便。我希望缩短那个时间。
有没有办法确定为什么 Jekyll 需要和重建页面一样长的时间?
或者,是否有关于编辑工作流的建议,允许使用 Jekyll 进行更短的反馈循环?
运行时jekyll --server
,将重建整个站点。在足够大的网站上,这需要非常长的时间。即使使用--auto
应该阻止整个站点重新生成的标志,完成的时间也相当长(对我来说 10 多秒,据报道在几分钟内)。这在编辑和预览单个页面时很不方便。我希望缩短那个时间。
有没有办法确定为什么 Jekyll 需要和重建页面一样长的时间?
或者,是否有关于编辑工作流的建议,允许使用 Jekyll 进行更短的反馈循环?
我无法解决构建完整站点所需的时间,但我想出了一种方法来显着加快起草文档和更改布局的速度。所有这些都假设您在本地机器上工作以进行编辑,然后部署到生产服务器。如果您有不同的流程,您的里程可能会有所不同。
核心思想是使用多个 jekyll 源目录,每个目录都指向同一个输出位置。就我而言,我使用三个。一个用于起草和编辑帖子(称为“_drafts”),一个用于布局、设计和功能更改(称为“_dev”),最后一个包含整个站点的内容(称为“_main”)。
顶级目录结构如下所示:
./_drafts
./_dev
./_main
./html
每个 jekyll 源的 _config.yml 文件设置如下,将 jekyll 生成的输出指向“html”目录:
destination: ../html
“_drafts”和“_dev”目录包含使它们模仿“_main”站点的设计和功能所需的最少文件数。我在这两个目录中完成所有工作,jekyll 运行在任何正在处理的目录中。我的本地 Web 服务器设置为将本地域(例如http://jekyll-test/
)指向“html”目录,因此我可以在进行更改时看到发生了什么。
完成编辑后,我将新更新的文件从“_dev”或“_drafts”复制到“_main”中的相应位置。文件准备好后,我会在“_main”中运行最后一次 jekyll。使用这种方法,您只需等待较长的站点生成时间,然后再将站点部署到生产环境。我已经使用这种方法一段时间了,发现它有很大的不同。
还有一些其他方法可以优化工作流程:
使用符号链接来帮助保持“_drafts”和“_main”的设计和功能同步。
如果你在 Mac 或 linux 机器上,设置符号链接指向和./_drafts/_config.yml
指向(类似的功能可能存在于 Windows 上,但我不能说)。出于某种原因,jekyll 不适用于某些符号链接的目录。例如,在我的安装中,我有一个不能用作符号链接的根级“css”目录。我必须在所有位置都有它的实际副本。./main/_config.yml
./_drafts/_layouts
./main/_layouts
创建部署脚本。
当我准备好部署时,我不会直接运行 jekyll。我编写了一个小脚本,在“_main”目录中调用 jekyll,将输出同步到我的生产服务器,然后在完成时通知我。这不仅节省了在 jekyll 上等待的时间,还减少了部署站点所需的步骤。
构建额外的脚本和工具。
从“_dev”和“_drafts”目录复制文件没什么大不了的,但它是添加一些自动化的主要地方。例如,我有一个命令行脚本,它将“_config.yml”文件以及“_layouts”和“css”目录从“_dev”复制到“_drafts”和“_main”(根据需要)。
案卷上的另一个工具是本地网络应用程序,它将帖子从“_drafts”移动到“_main”。任何使文件移动更容易并减少创建和发布的摩擦的东西都是好的。
使用 LiveReload
在本地运行,jekyll --auto
非常适合在处理文件时自动生成更改。与之自然搭配的是名为LiveReload的应用程序。它监视您的本地“html”目录并在内容更改时触发浏览器的自动重新加载。这样做的目的是您可以将浏览器窗口保留在文本编辑器旁边,并在保存文件时自动查看更改。时不时会有点片状,但用了之后,你不知道没有它你是怎么活的。
这是Jekyll 在 Github 上的问题跟踪器中经常出现的主题。不幸的是,这不是目标之一。例如:
只需搜索“编译”和“时间”这两个词,您就能找到更多。它比看起来要难一些,因为存在链接断开的可能性。
此外,如果您使用的是 LSI,请使用最新版本,因为有一个与之相关的修复程序可以使其更快。
我对你的唯一建议是看看你是否真的需要所有这些帖子(我知道,我知道),因为这可能是你现在从问题跟踪器中得到的唯一答案——我们都想解决的问题,但是没有人想开始。
PS:请在问题跟踪器上发布您的问题——抱怨的人越多,解决问题的可能性就越大。