gpt4 book ai didi

jekyll - 包含文件并将它们复制到输出

转载 作者:行者123 更新时间:2023-12-04 02:22:57 25 4
gpt4 key购买 nike

在 Jekyll 支持的页面中,我有一组文件位于:

_includes/stuff/

我将这些文件放在那里,以便我可以使用以下方法将它们包含到其他 Markdown 页面中:

{% include stuff/example.txt %}

这按预期工作。

但是,我还想将这些文件复制到生成的页面,以便我可以链接到它们,人们可以通过这些链接下载它们。但根据定义,存储在以下划线开头的目录中的内容不会被 Jekyll 复制。

另一种方法也行不通。我将文件放在一个名为 stuff 的顶级文件夹中。这会将文件夹复制到最终站点。但是,我无法包含此文件夹中的文件。似乎 include_relative 只允许包含当前文件下面的文件。例如,以下内容不起作用:

{% include_relative stuff/example.txt %}
{% include_relative /stuff/example.txt %}
{% include_relative ../stuff/example.txt %}

有什么想法可以同时实现包含和复制吗?

最佳答案

这适用于 index.html

{% include_relative example.txt %} for example.txt
{% include_relative stuff/example.txt %} for stuff/example.txt
{% include_relative /stuff/example.txt %} for stuff/example.txt

stuff/example.txt

class Toto
def dototo
myvar = "toto"
end
end

index.html

{% assign codeurl = "stuff/example.txt" %}
{% highlight ruby %}
{% include_relative {{codeurl}} %}
{% endhighlight %}
<a href="{{codeurl}}">link to code</a>

if codeurl == "/stuff/example.txt" this generates a link relative to site root
this may need {{site.baseurl}} prepended if your site is not at the root
of a domain (eg: user.github.io/repository)
<a href="{{site.baseurl}}{{codeurl}}">link to code</a>

出于安全原因,这将不起作用:

{% include_relative ../stuff/example.txt %}
Just to avoid directory traversal
{% include_relative ../../../../../../../../../../../../etc/pwd %}

如果你想把文件放在 _includes/stuff 中,你需要在 _config.yml 中执行 include: [/_includes ],这将包含所有文件在 _includes 作为静态文件。不是很干净,因为您不能过滤像 include: [/_includes/stuff ] 这样的子目录来只导入您的东西文件。

注意:一个肮脏的技巧允许您只导入 _includes/stuff/*.txt 但我认为它真的很肮脏。

# _config.yml
include:
- "_includes"
- "stuff"
- "*.txt"

exclude:
- "_includes/*.*"

关于jekyll - 包含文件并将它们复制到输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com