Plugins 如何从Jekyll中的液体块生成文件?

Plugins 如何从Jekyll中的液体块生成文件?,plugins,jekyll,liquid,Plugins,Jekyll,Liquid,我正在编写一个定义新Jekyll块ditaa的。块中的任何内容都应转换为图像文件,并将该图像插入到文章中,而不是块中。生成文件是可行的,但当复制到_site目录或在_site目录中生成文件时,文件显然已被删除 有没有合适/更好的方法来实现生成自定义资产的块插件?我还没有找到合适的方法来实现它,但找到了一种有效的方法。该解决方案可以在上找到,并使用Jekylls功能将任何未加下划线前缀的内容复制到_站点目录。然而,这种方法也有两个缺点: 源目录被自动生成的文件污染 在没有自动重新生成的情况下进行部

我正在编写一个定义新Jekyll块ditaa的。块中的任何内容都应转换为图像文件,并将该图像插入到文章中,而不是块中。生成文件是可行的,但当复制到_site目录或在_site目录中生成文件时,文件显然已被删除

有没有合适/更好的方法来实现生成自定义资产的块插件?

我还没有找到合适的方法来实现它,但找到了一种有效的方法。该解决方案可以在上找到,并使用Jekylls功能将任何未加下划线前缀的内容复制到_站点目录。然而,这种方法也有两个缺点:

源目录被自动生成的文件污染 在没有自动重新生成的情况下进行部署有点尴尬,因为图像是在Jekyll复制了所有文件之后生成的。因此,第二次杰基尔跑步是必要的。 我还没有找到正确的方法,但是一个有效的方法。该解决方案可以在上找到,并使用Jekylls功能将任何未加下划线前缀的内容复制到_站点目录。然而,这种方法也有两个缺点:

源目录被自动生成的文件污染 在没有自动重新生成的情况下进行部署有点尴尬,因为图像是在Jekyll复制了所有文件之后生成的。因此,第二次杰基尔跑步是必要的。 我找到了正确的解决方案:使用Jekyll::StaticFile类

将此类的一个对象添加到site.static_files数组时,将在渲染过程完成后将该文件标记为待复制。事实上,这些文件的复制是在site.write过程中完成的。查看Jekyll安装中的site_process.rb文件

这个类的用法很简单。当需要标记文件以备将来复制时,只需执行如下代码:

site.static_files << Jekyll::StaticFile.new(site, site.source, path, filename)
其中路径和文件名取决于文件在src文件夹中的位置

我在开发LaTeX->PNG液体标签时遇到了类似的问题。您可以在GitHub上查看我的代码:

我找到了合适的解决方案:使用Jekyll::StaticFile类

将此类的一个对象添加到site.static_files数组时,将在渲染过程完成后将该文件标记为待复制。事实上,这些文件的复制是在site.write过程中完成的。查看Jekyll安装中的site_process.rb文件

这个类的用法很简单。当需要标记文件以备将来复制时,只需执行如下代码:

site.static_files << Jekyll::StaticFile.new(site, site.source, path, filename)
其中路径和文件名取决于文件在src文件夹中的位置


我在开发LaTeX->PNG液体标签时遇到了类似的问题。您可以在GitHub上查看我的代码:

我已经找到了答案

替换这个

site.static_files << Jekyll::StaticFile.new(site, site.source, path, filename)

write命令在清理过程之后运行。我只有一个液体块和上面的代码。

我找到了答案

替换这个

site.static_files << Jekyll::StaticFile.new(site, site.source, path, filename)

write命令在清理过程之后运行。我只有一个液体块和上面的代码。

非常感谢。您是否在源代码树之外生成了文件,例如/tmp,并使用StaticFile从那里获取文件?没有,我将生成的文件保存在src中。我复制了这个结构:src/res/latex site/res/latex。这有助于保留生成文件的缓存。如果文件已经存在,则无需重新编译。该插件将删除所有孤立的临时和过时文件。看一下我的代码,如果你喜欢的话,抓取清理过程,或者让我在你的代码中合作,通过拉请求来改进它。事实上,多亏了你的问题,我发现了ditaa,并且一见钟情。多亏了你的澄清,我实际上不想将生成的数据保留在源代码树中,因为在我的案例中它是版本控制的。然而,检查它是否已经被复制到_站点应该是可能的,对吗?您可以自由发出拉取请求;-附言:我会更新你的答案,因为这确实是正确的解决方案。非常感谢。您是否在源代码树之外生成了文件,例如/tmp,并使用StaticFile从那里获取文件?没有,我将生成的文件保存在src中。我复制了这个结构:src/res/latex site/res/latex。这有助于保留生成文件的缓存。如果文件已经存在,则无需重新编译。该插件将删除所有孤立的临时和过时文件。看一下我的代码,如果你喜欢的话,抓取清理过程,或者让我在你的代码中合作,通过拉请求来改进它。事实上,多亏了你的问题,我发现了ditaa,并且一见钟情。多亏了你的澄清,我实际上不想将生成的数据保留在源代码树中,因为在我的案例中它是版本控制的。然而,检查它是否已经被复制到_站点应该是可能的,对吗?您可以自由发出拉取请求;-附言:我会更新你的答案,因为这确实是正确的解决方案。