Задать вопрос
dimovich85
@dimovich85
https://u-academy.net/

Как проинклюдить в nunjucks файл внутрь документа?

В моем проекте вот так подключен 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, то все ок, он не хочет дальше папки с шаблонами смотреть, как ему показать мир за пределами папки шаблонов?
  • Вопрос задан
  • 904 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
search
@search
мама говорит что я особенный
Придётся вас огорчить. Nunjucks не выглядывает "outside of the box". Об этом сообщает один из авторов библиотеки. Обсуждается вот тут:

https://github.com/mozilla/nunjucks/issues/326#iss...

Относительные пути использовать можно, но только в том случае если они находятся в пределах paths: []. Так что нужно или переместить файл в templates или добавить '...img/svg' в массив paths. Соболезную.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы