Don*_*n H 6 markdown nunjucks gulp yaml-front-matter
我正在努力为我的Gulp流程添加一些简单的Markdown处理,但是我无法完成这些工作.我似乎错过了获取前端内容和确定应用哪个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/'))
});
Run Code Online (Sandbox Code Playgroud)
markdown文件如下所示:
---
title: Title
layout: layout.html
nav_active: home
---
...markdown content...
Run Code Online (Sandbox Code Playgroud)
我觉得它正朝着正确的方向发展,但是能够直观地了解前端数据的去向,以及如何将它暴露给Nunjucks渲染,目前尚不清楚.有帮助吗?
小智 6
你需要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/'))
});
Run Code Online (Sandbox Code Playgroud)
降价
---
title: Title
layout: layout.nunjucks
nav_active: home
---
...markdown content...
Run Code Online (Sandbox Code Playgroud)
layout.nunjucks
<h1>{{ file.frontMatter.title }}</h1>
<p>{{ contents }}</p>
Run Code Online (Sandbox Code Playgroud)