Как добавить json всех файлов в каталоге c gulp-data?

Ребят, помогите добавить все json файлы в gulp-data для последующего использования в шаблонах twig.
К сожалению, опыта работы с gulp не так много, один раз настроил и работал. А тут захотелось улучшить.

Делаю так:

'use strict';

var gulp        = require('gulp'),
    data        = require('gulp-data'),
    path        = require('path'),
    fs          = require('fs'),
    twig        = require('gulp-twig'),
    plumber     = require('gulp-plumber'),

    browserSync = require("browser-sync"),
    reload = browserSync.reload;

var _GLOBAL_PATHS = {
    build  : 'app-public/',
    source : 'app-source/'
}

var config = {
    server: {
        baseDir: _GLOBAL_PATHS.build
    },
    tunnel: true,
    host: 'localhost',
    port: 8080,
};

var PATHS = {
    BUILD : {
        html   : _GLOBAL_PATHS.build
    },

    SOURCE : {
        twig   : _GLOBAL_PATHS.source + 'app-twig/*.twig',
    },

    WATCH : {
        twig   : _GLOBAL_PATHS.source + 'app-twig/**/*.twig',
    }
};

/* ------------------------------------------------------------ */

// .....

gulp.task('twig:build', function () {
    gulp.src(PATHS.SOURCE.twig)
        .pipe(plumber())
        /* тут пытаюсь решить свою задачу */
        .pipe(
            gulp.src('./app-source/app-data/*.json')
                .pipe(data(function(file) {return JSON.parse(fs.readFileSync(file.path)); }))
            )
        /* -------------------- */

        /* Page data - если указывать явно каждый файл, всё работает, но не удобно */
        // .pipe(data(function(file) { return JSON.parse(fs.readFileSync('./app-source/app-data/Globals.json')); }))
        // .pipe(data(function(file) { return JSON.parse(fs.readFileSync('./app-source/app-data/Menu.json')); }))
        /* -------------------- */

        .pipe(twig())
        .pipe(plumber.stop())
        .pipe(gulp.dest(PATHS.BUILD.html))
        .pipe(reload({stream: true}));
});


Ошибка в консоли:
Plumber found unhandled error:
 Error in plugin "gulp-data"
Message:
    SyntaxError: Unexpected token % in JSON at position 1
[02:17:44] Plumber found unhandled error:
 Error in plugin "gulp-data"
Message:
    SyntaxError: Unexpected token < in JSON at position 0


Еще раз обращу ваше внимание, на то, что когда каждый файл добавляю в ручную, всё работает, но это не удобно. Заранее спасибо тем, кто откликнется.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 1
weblive
@weblive Автор вопроса
PHP
Так как ответа нет, решил делать так:

.pipe(data(function(file) { return JSON.parse(fs.readFileSync('./app-source/app-data/Globals.json')); }))
.pipe(data(function(file) { return JSON.parse(fs.readFileSync('./app-source/app-data/' + path.basename(file.path) + '.json')); }))


То есть, 1 файл с json для глобальных данных (что используются на каждой странице). И подгружается в зависимости от страницы, дополнительный файл. Например, если файл страницы с именем News.twig нужно создать в каталоге где хранятся json файлы, файл с названием "News.twig.json".

В общем-то такой подход вполне решает мою проблему. В какой-то степени такой подход даже и лучше.
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
Acme Crypto Corp Нижний Новгород
от 120 000 до 180 000 руб.
Acme Crypto Corp Нижний Новгород
от 150 000 до 250 000 руб.
Acme Crypto Corp Нижний Новгород
от 80 000 до 140 000 руб.
18 авг. 2018, в 01:10
17000 руб./за проект
17 авг. 2018, в 23:00
5500 руб./за проект