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

时间:2016-05-15 00:29:03

标签: handlebars.js metalsmith

我有很多降价源文件,这些文件是由某些数据导出步骤自动生成的。

我正在使用metalsmith-layouts,例如这些行在我手工制作(非自动生成)的降价文件之上,以便使用我的layout.html布局它们:

---
layout: layout.html
title:  Downloads
---

如何将布局信息动态添加到所有匹配的文件,例如文件模式教程/ * .md,以便这些文件也可以使用我的布局进行渲染?在转换之前将这些信息添加到文件中并不优雅。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我最近刚刚写了我的第一个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最近稍微更改了,请阅读文档。