serii81
@serii81
Я люблю phр...

Почему mustache.js выдает ошибку?

Пытаюсь создать спрайт svg с помощью gulp.
Вот содержимое gulpfile.js
let svgSprite = require('gulp-svg-sprite'),
    svgmin = require('gulp-svgmin'),
    gulp = require('gulp'),
    cheerio = require('gulp-cheerio'),
    replace = require('gulp-replace');

gulp.task('svgSpriteBuild', function(){
    return gulp.src('assets/i/icons/*.svg')
    // minify svg
        .pipe(svgmin({
            js2svg: {
                pretty: true
            }
        }))
        // remove all fill, style and stroke declarations in out shapes
        .pipe(cheerio({
            run: function($){
                $('[fill]').removeAttr('fill');
                $('[stroke]').removeAttr('stroke');
                $('[style]').removeAttr('style');
            },
            parserOptions: {xmlMode: true}
        }))
        // cheerio plugin create unnecessary string '>', so replace it.
        .pipe(replace('>', '>'))
        // build svg sprite
        .pipe(svgSprite({
            mode: {
                symbol: {
                    sprite: "../sprite.svg",
                    render: {
                        scss: {
                            dest: '../../../sass/_sprite.scss',
                            template: "assets/sass/templates/_sprite_template.scss"
                        }
                    }
                }
            }
        }))
    .pipe(gulp.dest('assets/i/sprite/'));
});


Вот содержимое шаблона scss
.icon {
  display: inline-block;
  width: 1em;
  height: 1em;
  fill: currentColor;
}

{{#shapes}}
.icon-{{base}} {
  font-size:({{height.inner}}/10)*1rem;
  width:({{width.inner}}/{{height.inner}})*1em;
}


Вот ошибка при компиляции
Starting 'svgSpriteBuild'...
/var/www/test.loc/node_modules/mustache/mustache.js:226
      throw new Error('Unclosed section "' + openSection[1] + '" at ' + scanner.pos);
      ^

Error: Unclosed section "shapes" at 207
    at parseTemplate (/var/www/test.loc/node_modules/mustache/mustache.js:226:13)
    at Writer.parse (/var/www/test.loc/node_modules/mustache/mustache.js:450:34)
    at Writer.render (/var/www/test.loc/node_modules/mustache/mustache.js:465:23)
    at Object.render (/var/www/test.loc/node_modules/mustache/mustache.js:603:26)
    at /var/www/test.loc/node_modules/svg-sprite/lib/svg-sprite/mode/base.js:165:27
    at /var/www/test.loc/node_modules/async/dist/async.js:3866:24
    at replenish (/var/www/test.loc/node_modules/async/dist/async.js:998:17)
    at /var/www/test.loc/node_modules/async/dist/async.js:1002:9
    at _parallel (/var/www/test.loc/node_modules/async/dist/async.js:3865:5)
    at Object.parallelLimit$1 [as parallelLimit] (/var/www/test.loc/node_modules/async/dist/async.js:3971:5)

Process finished with exit code 1

Думаю, что для mustache.js возникают проблемы с шаблоном, я это выяснил методом тыка(закоментировал поочередно все задачи).
Вот ссылка на статью glivera-team.github.io/svg/2016/06/13/svg-sprites-...
Вот ссылка на сам проект https://github.com/seriiserii825/bugfix
Уже пол дня мучаюсь с этим спрайтом, почти что получилось, немножно осталось подножать))
Буду рад помощи.
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
rework
@rework
Помог ответ? В благодарность отметь его решением
Думаю, что ошибка возникает из-за какой-то невалидной svg или шаблона scss, в котором не закрывается тэг, проверьте ваши svg файлы из которых вы собираете спрайт.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы