如何将布局元信息插入到与文件模式匹配的所有文件中?

How to insert layout meta info into all files matching a file pattern?

我有很多markdown源文件,都是一些数据导出步骤自动生成的。

我正在使用 metalsmith-layouts 并且有例如这些行位于我手工制作的(不是自动生成的)markdown 文件之上,以便使用我的 layout.html:

对其进行布局
---
layout: layout.html
title:  Downloads
---

如何将布局信息动态添加到所有匹配的文件,例如文件模式 tutorials/*.md,以便这些文件也与我的布局一起呈现?在转换之前将此信息添加到文件中并不优雅。

同时我发现了它。可以通过这种方式为文件模式定义默认布局:

// Apply the default layout to all .html files
.use(layouts({
    engine: 'handlebars',
    default: 'layout.html',
    directory: 'layouts',
    pattern: '**/*.html'
}))

我最近刚刚编写了我的前几个 Metalsmith 插件,其中一个 keymaster 可以完全满足您最初的需求。要将所有教程/*.md 文件的布局信息设置为 "foobar.html",您需要

use(keymaster(function() { return "foobar.html; },   // set it to "foobar.html"
              "layout",                              // in the layout field
              /tutorials.*md/);                      // for files matching this regex

(注意:我的正则表达式并不完美,因此最后一行可能会关闭。

嗯,第一行太笨拙让我想稍微改变一下我的 API。

注意,API 最近 略有 更改,请阅读文档。