我试图让我的metalsmith
设置正常工作,没什么特别的。
在build.js
我有:
…
handlebars.registerHelper('doctype', function() {
return new handlebars.SafeString('<!DOCTYPE html>');
});
…
在我的部分模板header.hbt
中,我有:
{{doctype}}
<html>
…
结果html以:
开头 <p><!DOCTYPE html></p>
- 这显然不是我需要的。
有什么建议吗?
PS。在我的布局文件中使用普通的doctype定义具有相同的效果。使用handlebars ^4.0.5
。
编辑1:
稍微尝试一下后,我可以提供另一个症状:SafeString()
调用的结果似乎包含在<p>
标记中,如果它放在<html>
块之前。这不是特定于doctype的声明,“普通的”html元素似乎也会受到影响。
编辑2:
现在我为safeString()
:
a)<div>
块内的传统元素(例如<html>
)按预期呈现,不做任何更改。
b)<html>
块之前的传统元素呈现正常,但放在<p>
标记内。
c)<html>
块中的 doctype 元素呈现为纯文本,如下所示:<!DOCTYPE html>
d)<html>
块之前的 doctype 元素将以相同的方式呈现,但包含在<p>
元素中。
答案 0 :(得分:2)
似乎是与metalsmith
相关的问题,而不是handlebars
固有的问题。给定的(错误!)插件调用顺序会导致问题:在调用use(layouts(…))
之前调用use(markdown(…))
是原因。 (所以可能是markdown
插件进行了包装。)抱歉,麻烦。