В моем проекте вот так подключен nunjucks
let gulp = require('gulp');
let nunjucksRender = require('gulp-nunjucks-render');
let plumber = require('gulp-plumber');
let gulpif = require('gulp-if');
let changed = require('gulp-changed');
let prettify = require('gulp-prettify');
let frontMatter = require('gulp-front-matter');
let config = require('../config');
function renderHtml(onlyChanged) {
nunjucksRender.nunjucks.configure(config.src.templates, {
watch: false,
trimBlocks: true,
lstripBlocks: false
});
return gulp
.src([config.src.templates + '/**/[^_]*.html'])
.pipe(plumber({
errorHandler: config.errorHandler
}))
.pipe(gulpif(onlyChanged, changed(config.dest.html)))
.pipe(frontMatter({ property: 'data' }))
.pipe(nunjucksRender({
PRODUCTION: config.production,
path: [config.src.templates]
}))
.pipe(prettify({
indent_size: 4,
wrap_attributes: 'auto', // 'force'
preserve_newlines: false,
// unformatted: [],
end_with_newline: true
}))
.pipe(gulp.dest(config.dest.html));
}
gulp.task('nunjucks', function() {
return renderHtml();
});
gulp.task('nunjucks:changed', function() {
return renderHtml(true);
});
gulp.task('nunjucks:watch', function() {
gulp.watch([
config.src.templates + '/**/[^_]*.html'
], ['nunjucks:changed']);
gulp.watch([
config.src.templates + '/**/_*.html'
], ['nunjucks']);
});
В шаблоне вызываю вот так include:
{% include "../img/svg/ico.svg" %}
Ошибка: gulp-notify: [Compile Error] (unknown path)
Error: template not found: ../img/svg/ico.svg
Путь указал правильно, имена тоже. Если иконку кинуть в папку templates, куда нацелен nunjucksRender, то все ок, он не хочет дальше папки с шаблонами смотреть, как ему показать мир за пределами папки шаблонов?