我正在尝试让我的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()似乎被包装在标签中。这并非特定于 doctype 声明,»normal« html 元素似乎也受到影响。<p><html>
编辑 2:
现在我已经提炼了 2x2 案例以实现以下功能safeString():
a)块内的常规元素(例如<div>)<html>按预期呈现,没有更改。
b)块渲染之前的常规元素,但放置在标签内。<html><p>
c)块内的doctype元素<html>被呈现为纯文本,如下所示:<!DOCTYPE html>
d)块之前的doctype元素<html>将以相同的方式呈现,但包装在一个<p>元素中。