我正在使用Metalsmith和Nunjucks创建一个静态网站。
我没有问题创建一个类似博客的网站,意思是创建一个布局,在其中我可以包装一些标记内容,使用金属匠布局插件。
但我想提出一些意见:
例如,一个index.njk:
{% extends "layouts/base.njk" %}
{% block content %}
Hello World!
{% include components/test1.njk %}
{% include components/test2.njk %}
{% include components/test3.njk %}
{% endblock %}我试着用金属原位插件:
.use(inplace({
engineOptions: {
path: __dirname + '/src/templating'
}
})但是我有一个错误:The Transform "nunjucks" does not support rendering synchronously
似乎inplace()不能正确地呈现包含..。
知道吗?
发布于 2018-04-12 15:59:05
好吧,我对金属匠的松懈有了很好的回答和解释。
首先,文件夹结构应该类似于:
layouts/
base.njk
components/
test.njk
partials/
head.njk
src/
index.njk原因是src文件夹应该只收集主内容,所有的nunjucks文件都只是添加到这个内容中。
然后,使用这种配置,一个简单的.use(inplace())就足够了。如果目录与directory不同,则可以添加./layouts选项。
有了这个设置,这个index.njk就可以正常工作了:
{% extends "./layouts/base.njk" %}
{% block content %}
Hello World!
{% include './components/test.njk' %}
{% endblock %}base.njk布局为:
<!doctype html>
<html class="" lang="">
{% include '../partials/head.njk' %}
<body>
{% block content %}{% endblock %}
</body>
</html>但是,正如有人告诉我的那样,要小心:
src文件夹的文件在金属匠文件对象中转换,因此从那里读取,这意味着在内存中而不是直接从磁盘中读取。这意味着nunjucks无法解析该文件夹中的相对路径,这就是为什么index.njk中的包含有一个绝对路径:'./components/test.njk'src文件夹外的文件没有在金属匠文件对象中转换,因此直接从磁盘读取。在这种情况下,nunjucks可以解析相对路径,这就是包含有这样一个路径'../partials/head.njk'的原因。希望我能很好地解释和理解^^
非常感谢“伊斯梅”花了些时间帮我解决金属匠的问题。
https://stackoverflow.com/questions/49799507
复制相似问题