我正在通过 Gulp 设置使用 Markdown 和 Nunjucks 生成静态页面的工作流程。我目前依赖的两个任务是:
gulp.task('templates', function() {
return gulp.src('app/templates/pages/*.nunjucks')
.pipe(nunjucksRender({
path: ['app/templates/', 'app/templates/pages/']
}))
.pipe(gulp.dest('app'));
});
gulp.task('pages', function() {
gulp.src('app/pages/**/*.md')
.pipe(frontMatter())
.pipe(marked())
.pipe(wrap(function (data) {
return fs.readFileSync('app/templates/pages/' + data.file.frontMatter.layout).toString()
}, null, {engine: 'nunjucks'}))
.pipe(gulp.dest('app'))
});
具有以下结构:
/app
| index.html
|
+---css
| app.scss
| custom.scss
|
+---js
| app.js
|
+---pages
| index.md
|
\---templates
| layout.nunjucks
|
+---macros
| nav-macro.nunjucks
|
+---pages
| index.nunjucks
|
\---partials
navigation.nunjucks
如果我gulp templates
使用扩展 layout.nunjucks 的 index.nunjucks 运行它,则将 index.html 编译到 /app 中。但是,我想使用gulp pages
从 index.md 中绘制 frontmatter 和 Markdown 来生成 index.html 的内容。
我遇到的问题是路径:鉴于上述结构,如何通过 /app/templates/pages/index.nunjucks 使用 /app/pages/index.md 作为 /app/index.html 的内容?目前,任务失败并显示Template render error: (unknown path)
.
本质上,我试图扩展这里所取得的成就:Gulp Front Matter +Markdown through Nunjucks