Metalsmith не избегает вывода Markdown Nunjucks

#nunjucks #metalsmith

#nunjucks #metalsmith

Вопрос:

Я застрял с этой проблемой. Когда я использую Markdown Nunjucks, как описано в Вики-вики metalsmith-in-place, вывод неверен (см. Ниже).

Макет по умолчанию, обратите внимание на safe фильтр ( _layouts/base.njk ):

 <!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="utf-8">
    <title>{{title}}</title>
  </head>
  <body>
    {{ contents | safe }}
  </body>
 

Шаблон, использующий Markdown Nunjucks ( about.md.njk ):

 ---
title: About
layout: base.njk
---

# {{ title }}
 

Вывод:

 <p>amp;<!DOCTYPE htmlamp;>
  amp;<html lang=amp;quot;enamp;quot;amp;>
  amp;<headamp;>
    amp;<meta charset=amp;quot;utf-8amp;quot;amp;>
    amp;<titleamp;>Aboutamp;</titleamp;>
  amp;</headamp;>
  amp;<bodyamp;></p>

<h1>About</h1>

<p>  amp;</bodyamp;>
amp;</htmlamp;></p>
 

Ответ №1:

Решается сразу после публикации вопроса. Это может быть помощь, проблема в порядке плагинов в моем build.js :

 Metalsmith(__dirname)
  .source('./contents')
  .destination('./build')
  .clean(true)
  .use(inPlace()) // inPlace must come BEFORE layouts!
  .use(layouts({
    directory: '_layouts',
    default: 'base.njk'
  }))
  .build(function(err) {
    if (err) throw err;
  });
 

Комментарии:

1. Круто — просто чтобы никто больше не сталкивался с этим в будущем, наличие этой информации в SO не так ценно, как подача вопроса (или даже PR), чтобы заставить сопровождающих обновлять README.md чтобы сделать это очень явным. Стоит ли это делать?

2. Я бы предположил, что вы, возможно, захотите объяснить, почему это работает. Помогло бы тем, кто придет позже.