Metalsmith静态站点页面缺少元数据

 嗒嗒爱臭臭 发布于 2023-01-12 17:01

我一直在尝试设置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前端元数据.这似乎很重要,因为插件使用元数据来呈现页面.

1 个回答
  • 解决方案的关键在于降价渲染页面开始时的三个奇怪的角色

    
    

    和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;
        });
    })
    

    2023-01-12 17:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有