jekyll 调试或打印所有变量
jekyll debug or print all variables
我想进入 Jekyll 的大脑,看看发生了什么,在 php 中你有 get_defined_vars,所以我尝试做一些类似的事情:
{% for local_variable in local_variables %}
<p> {{ local_variable }} </p><br>
{% endfor %}
什么都不输出。我是不是太努力了? ruby 或 jekyll 中是否有一些方法可以做到这一点?我只是想四处看看,确保一切设置正确,并可能找出我不知道的变量。
使用 Jekyll 2.x,您可以使用 this plugin。
它允许您执行类似 {{ site | debug }}
的操作。
从 Jekyll 3 开始,您有 {{ variable | inspect }}
.
inspect
不允许您查看变量内部,而 jsonify
就是这样做的。
{{ variable | jsonify }}
不需要插件。
请注意,jsonify
将使用它完成任务所需的内存,没有任何特定限制。比方说,如果您有数百篇文章或页面,并且您希望一次将它们全部 jsonify,这可能不会像您预期的那样工作。最坏的情况是系统可能会耗尽 RAM 并变得无响应。谨慎行事。
其他答案没有解决问题的“所有变量”部分。
尽管 Jekyll 没有提供 get_defined_vars
等价物,the documentation does declare all available global variables(目前是 site
、page
、layout
、content
, 和 paginator
).
因此,您可以 debug/print 所有 变量与一系列 jsonify
filter 调用(也使用 escape
进行过滤,因为其中一些将包含 HTML):
<pre>
site: {{ site | jsonify | escape }}
page: {{ page | jsonify | escape }}
layout: {{ layout | jsonify | escape }}
content: {{ content | jsonify | escape }}
paginator: {{ paginator | jsonify | escape }}
</pre>
要漂亮地打印变量,您可以将其插入任何模板:
<pre id="jekyll-debug"></pre>
<script>
var obj = JSON.parse(decodeURIComponent("{{ site | jsonify | uri_escape }}"));
var prettyJson = JSON.stringify(obj, null, 4); // Pretty-printed JSON (indented 4 spaces).
document.getElementById("jekyll-debug").textContent = prettyJson;
</script>
将 site
(在 {{ site | jsonify | uri_escape }}
中)更改为您要打印的任何变量。
然后您将能够在生成的页面中看到整齐排列的变量。像这样:
为了将来看到此页面的人。
我写了一个包来完成这类工作。在你的命令行中,安装它,
gem install 'jekyll-liquid-debug'
然后您可以在您的终端中调试您的liquid
文件,而无需一次又一次地构建您的整个站点。
通过使用,
jekyll-liquid-debug -f YOUR_LIQUID_FILE.liquid
它还有其他用法,请多多查看~
我想进入 Jekyll 的大脑,看看发生了什么,在 php 中你有 get_defined_vars,所以我尝试做一些类似的事情:
{% for local_variable in local_variables %}
<p> {{ local_variable }} </p><br>
{% endfor %}
什么都不输出。我是不是太努力了? ruby 或 jekyll 中是否有一些方法可以做到这一点?我只是想四处看看,确保一切设置正确,并可能找出我不知道的变量。
使用 Jekyll 2.x,您可以使用 this plugin。
它允许您执行类似 {{ site | debug }}
的操作。
从 Jekyll 3 开始,您有 {{ variable | inspect }}
.
inspect
不允许您查看变量内部,而 jsonify
就是这样做的。
{{ variable | jsonify }}
不需要插件。
请注意,jsonify
将使用它完成任务所需的内存,没有任何特定限制。比方说,如果您有数百篇文章或页面,并且您希望一次将它们全部 jsonify,这可能不会像您预期的那样工作。最坏的情况是系统可能会耗尽 RAM 并变得无响应。谨慎行事。
其他答案没有解决问题的“所有变量”部分。
尽管 Jekyll 没有提供 get_defined_vars
等价物,the documentation does declare all available global variables(目前是 site
、page
、layout
、content
, 和 paginator
).
因此,您可以 debug/print 所有 变量与一系列 jsonify
filter 调用(也使用 escape
进行过滤,因为其中一些将包含 HTML):
<pre>
site: {{ site | jsonify | escape }}
page: {{ page | jsonify | escape }}
layout: {{ layout | jsonify | escape }}
content: {{ content | jsonify | escape }}
paginator: {{ paginator | jsonify | escape }}
</pre>
要漂亮地打印变量,您可以将其插入任何模板:
<pre id="jekyll-debug"></pre>
<script>
var obj = JSON.parse(decodeURIComponent("{{ site | jsonify | uri_escape }}"));
var prettyJson = JSON.stringify(obj, null, 4); // Pretty-printed JSON (indented 4 spaces).
document.getElementById("jekyll-debug").textContent = prettyJson;
</script>
将 site
(在 {{ site | jsonify | uri_escape }}
中)更改为您要打印的任何变量。
然后您将能够在生成的页面中看到整齐排列的变量。像这样:
为了将来看到此页面的人。
我写了一个包来完成这类工作。在你的命令行中,安装它,
gem install 'jekyll-liquid-debug'
然后您可以在您的终端中调试您的liquid
文件,而无需一次又一次地构建您的整个站点。
通过使用,
jekyll-liquid-debug -f YOUR_LIQUID_FILE.liquid
它还有其他用法,请多多查看~