如何使用 Nunjucks 的局部/宏/包含 metalsmith-in-place?
How to use Nunjucks' partials / macros / includes with metalsmith-in-place?
我在降价文件中重用模板代码时遇到问题。
例如,我想引入 vimeo 链接的嵌入代码,并将 vimeo id 传递给调用。
一个示例宏:
{% macro vimeoEmbed(id) %}
<iframe src="https://player.vimeo.com/video/{{ id }}?title=0&byline=0&portrait=0" width="300" height="169" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
{% endmacro %}
这样使用:
{{ vimeoEmbed(120394634) }}
如果我直接在 markdown 文件中定义宏,这会起作用。但是我当然想要一个带有宏的 全局文件 以便于维护。
我尝试使用 Nunjucks 的 {% import "macros.njk" as macros %}
。 macros.njk
将包含 vimeoEmbed
宏。
但不幸的是我不断收到 Error: template names must be a string: undefined
.
作为替代方案,我尝试使用 {% include "vimeoEmbed.njk" %}
,但我得到的是相同的 Error: template names must be a string: undefined
。
这似乎是 metalsmith-in-place
特有的,因为 Nujucks 的 include
和 import
与 metalsmith-layouts
一起工作得很好。
任何其他在 Markdown 文件和 Nunjucks 中重用代码的解决方案也是受欢迎的。谢谢!
我自己想出来了。
我的错误基本上是 运行 metalsmith-in-place
在 metalsmith-markdown
插件之后。 Markdown 插件已经将 {{ "some string" }}
中的引号转换为 {{ "some string" }}
。
我将其切换为就地 运行ning 在 Markdown 之前。
同时我也将metalsmith-in-place
更新为2.0.0-beta.1
。它现在依赖于 JSTransformer 而不是 consolidate.js 了。
由于 Nunjucks 转换器似乎有一个带有 Nujucks 包含和导入的 issue,我还必须从 Nunjucks 宏切换到过滤器。
所以我不完全确定这会解决最初的问题,但很有可能。
我在降价文件中重用模板代码时遇到问题。 例如,我想引入 vimeo 链接的嵌入代码,并将 vimeo id 传递给调用。
一个示例宏:
{% macro vimeoEmbed(id) %}
<iframe src="https://player.vimeo.com/video/{{ id }}?title=0&byline=0&portrait=0" width="300" height="169" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
{% endmacro %}
这样使用:
{{ vimeoEmbed(120394634) }}
如果我直接在 markdown 文件中定义宏,这会起作用。但是我当然想要一个带有宏的 全局文件 以便于维护。
我尝试使用 Nunjucks 的 {% import "macros.njk" as macros %}
。 macros.njk
将包含 vimeoEmbed
宏。
但不幸的是我不断收到 Error: template names must be a string: undefined
.
作为替代方案,我尝试使用 {% include "vimeoEmbed.njk" %}
,但我得到的是相同的 Error: template names must be a string: undefined
。
这似乎是 metalsmith-in-place
特有的,因为 Nujucks 的 include
和 import
与 metalsmith-layouts
一起工作得很好。
任何其他在 Markdown 文件和 Nunjucks 中重用代码的解决方案也是受欢迎的。谢谢!
我自己想出来了。
我的错误基本上是 运行 metalsmith-in-place
在 metalsmith-markdown
插件之后。 Markdown 插件已经将 {{ "some string" }}
中的引号转换为 {{ "some string" }}
。
我将其切换为就地 运行ning 在 Markdown 之前。
同时我也将metalsmith-in-place
更新为2.0.0-beta.1
。它现在依赖于 JSTransformer 而不是 consolidate.js 了。
由于 Nunjucks 转换器似乎有一个带有 Nujucks 包含和导入的 issue,我还必须从 Nunjucks 宏切换到过滤器。
所以我不完全确定这会解决最初的问题,但很有可能。