我正在使用这个gulp插件来使用nunjucks来简化HTML管理。
https://github.com/carlosl/gulp-nunjucks-render
gulp.task('default', function () {
return gulp.src('src/templates/*.html')
.pipe(nunjucksRender({
path: ['src/templates/'] // String or Array
}))
.pipe(gulp.dest('dist'));
});
我想将页面目录下的特定页面的模板和部分保存在不同的文件夹中,所以我尝试将此路径保留为
path: ['src/templates/', 'src/common-partials/', 'src/pages/**/**/includes/']
但它不起作用。
Template render error: (unknown path)
Error: template not found: component1.nunjucks
我的设置
答案 0 :(得分:1)
我认为这两个/**/**/
可能是个问题。 **
模式匹配路径字符串中的多个级别,因此我不确定行中的两个行为应该是什么行为。以下内容应与您的目录匹配:
'src/pages/**/includes/'
也就是说,如果nunjucks首先支持globbing(我在文档中找不到任何提及)。
答案 1 :(得分:1)
path
选项不支持通配。您必须单独传递每个路径:
gulp.task('default', function () {
return gulp.src('src/templates/*.html')
.pipe(nunjucksRender({
path: ['src/templates/', 'src/pages/section_name/sub-page/includes']
}))
.pipe(gulp.dest('dist'));
});
如果你真的想使用globbing,你可以使用glob
模块解析每个glob,然后再传递给gulp-nunjucks-render
:
var glob = require('glob');
gulp.task('default', function() {
var includeDirs = ['src/templates/', 'src/pages/**/includes'];
return gulp.src('src/templates/*.html')
.pipe(nunjucksRender({
path: includeDirs.reduce(function(dirs, g) {
return dirs.concat(glob.sync(g));
}, [])
}))
.pipe(gulp.dest('dist'));
});