如何通过覆盖输出目录中的现有文件来阻止“jekyll build”?

时间:2014-01-23 18:40:38

标签: jekyll

我的Jekyll支持的网站的源代码存在于一个git仓库中,但该网站还需要一些太大的静态文件,这些文件太大而无法进行版本控制。因此,它们不是Jekyll构建管道的一部分。

我希望这些只是住在Jekyll目的地的assets目录中(这是一个服务器目录;请注意,我在这里无法控制服务器;我只能do是将静态文件转储到git repo中不存在的指定目录中。但是,运行jekyll build会删除输出目录中的所有内容。

在这种情况下,有没有办法改变杰基尔的行为?或者还有其他一些处理这个问题的好方法吗?

3 个答案:

答案 0 :(得分:4)

如果您通过FTP将Jekyll的输出目录上传到您的服务器,您可以使用一个让您忽略文件夹的FTP工具。

例如,我自己的网站是用Jekyll构建的,但托管在我自己的网站空间上,所以我通过FTP上传它。
I explained in this answer how I scripted the building and uploading process,所以我只需点击一下即可更新我的网站。

就我而言(Windows),我使用了WinSCP这个免费的命令行FTP客户端。
如果您不在Windows上,则需要使用其他东西,但可能还有其他FTP工具可以忽略文件夹。

要忽略WinSCP中的assets文件夹,只需将此行放入脚本文件中:
(包含实际WinSCP命令的文件 - 请阅读我的other answer以获取更多信息)

option exclude "assets/"

现在,您可以在服务器上上传一个大的assets文件夹,以后在以后通过FTP更新您的网站时不会覆盖/删除它。

答案 1 :(得分:2)

不确定这是否解决了OP中的具体情况,但是当我最终找到答案here时看到我如何继续访问此页面,我想我会在这个问题中添加答案。这有助于他人。

我有一个git post-hook,当我推送到我的主机时在我的webhost中构建我的jekyll站点,但它也删除了我已经FTP过的任何其他内容。所以现在我已经把一些我需要留在目录中的东西(在我的情况下为external/),并将以下内容添加到我的_config.yml中:

exclude: [external]
keep_files: [external]

现在external/中的文件存活了。

答案 2 :(得分:1)

这是一个很好的话题。我想把这个变化带到Jekyll核心一段时间了,但是从来没有绕过它,因为Jekyll习惯于制作相对较小的网站。

但现在这是令人鼓舞的,因为像你这样的人开始越来越多地使用Jekyll,并提出这样的请求,我认为我们可以通过在Jekyll核心本身集成某种git功能来实现这一功能,从而删除需要在每次运行时完整地构建整个站点。我见过人们使用类似的技术来加速JSON文件的生成,以搜索有大量帖子的Jekyll网站。

也许这个功能将在接下来的两个版本中添加。 :)