Gulp Front Matter + Уценка через нуньюки
Я работаю над добавлением некоторой простой обработки Markdown в мой процесс Gulp, но я не могу заставить все части работать вместе. Кажется, мне не хватает шага между получением содержимого переднего плана и определением, какой шаблон Nunjuck следует применить.
Вот раздел в моем файле Gulp:
gulp.task('pages:md', function() {
gulp.src('./content/**/*.md')
.pipe(frontMatter({ // optional configuration
property: 'frontMatter', // property added to file object
remove: true // should we remove front-matter header?
}))
.pipe(marked({
// optional : marked options
}))
.pipe(nunjucks({
// ?? Feels like I need to specify which template applies based on the front matter "layout" property?
}))
.pipe(gulp.dest('build/'))
});
Файл уценки выглядит так:
---
title: Title
layout: layout.html
nav_active: home
---
...markdown content...
Я чувствую, что он движется в правильном направлении, но я не могу понять, куда ушли эти данные, и как открыть их для рендеринга Nunjucks. Любая помощь?
2 ответа
Тебе нужно gulp-wrap
и оригинал nunjucks
,
gulp-nunjucks - это инструмент для компиляции потока шаблонов nunjucks, но вам нужно просто обернуть содержимое в шаблон nunjucks, и для этого и нужен gulp-wrap.
Пытаться npm install gulp-wrap nunjucks
в дополнение к другим настройкам, а затем следующие должны работать.
gulpfile
var gulp = require('gulp')
var wrap = require('gulp-wrap')
var frontMatter = require('gulp-front-matter')
var marked = require('gulp-marked')
var fs = require('fs')
gulp.task('pages:md', function() {
gulp.src('./content/**/*.md')
.pipe(frontMatter())
.pipe(marked())
.pipe(wrap(function (data) {
return fs.readFileSync('path/to/layout/' + data.file.frontMatter.layout).toString()
}, null, {engine: 'nunjucks'}))
.pipe(gulp.dest('build/'))
});
уценка
---
title: Title
layout: layout.nunjucks
nav_active: home
---
...markdown content...
layout.nunjucks
<h1>{{ file.frontMatter.title }}</h1>
<p>{{ contents }}</p>
Возможно, вы захотите взглянуть на плагин gulp-ssg. Я не знаю, чего это стоит, но это упоминалось в этом выпуске для человека, у которого была такая же проблема, как и у вас.
Не совсем то, что вы ищете, но для такого рода работы у меня был успех, используя металлист. Вы даже можете смешать его с gulp, если, как и я, у вас, например, более сложная обработка ваших ресурсов javascripts.