我一直在尝试设置Metalsmith的教程,我已经到了第1部分的末尾.
我安装了node.js和模块.IDE是安装了Node.js工具的Visual Studio 2013.我已经放入了一个基本结构,我试图用模板来渲染单个页面.
说明告诉将以下文件放入文件:
--- title: Home template: home.hbt --- This is your first page
使用以下模板:
{{ title }} | Metalsmith Page {{{ contents }}}
该教程说它应该渲染到一个html页面,但我得到的结果是这样的:
--- title: Home template: home.hbt --- This is your first page
当我使用markdown渲染器时,它会给出
--- title: Home
template: home.hbt
This is your first page
调试代码显示,当它到达渲染器时,缺少YAML前端元数据.这似乎很重要,因为插件使用元数据来呈现页面.
解决方案的关键在于降价渲染页面开始时的三个奇怪的角色

和YAML前线警告:
UTF-8字符编码警告
如果您使用UTF-8编码,请确保您的文件中不存在BOM头字符,否则Jekyll会发生非常糟糕的事情.如果您在Windows上运行Jekyll,这尤其重要.
查看Node.js中加载的缓冲区显示了utf8 BOM字符.
一种解决方案是让IDE停止将其保存为带有BOM的utf8,但对我来说这不是一个可行的选择.
我创建了一个解决方法,作为一些必须在任何其他metalsmith插件之前运行的小行.
var stripBom = require('strip-bom'); var front = require('front-matter'); var extend = require('extend'); // **snip** .use(function __utf8BOM_workaround(files, metalsmith, done) { setImmediate(done); Object.keys(files).forEach(function (file) { var data = files[file]; var parsed = front(stripBom(data.contents.toString())); data = extend({}, data, parsed.attributes); data.contents = new Buffer(parsed.body); files[file] = data; }); })