gulp-nunjucks-html + данные gulp не компилируются на часах

Я написал задачу gulp, чтобы брать данные из файлов json и обрабатывать их как html. Когда я впервые запускаю сборку, это работает как шарм, однако я настроил задачу наблюдения, чтобы также сделать это, и хотя она перестроит файл nunjucks в html, похоже, что json игнорируется до следующей полной сборки (хотя все часы выполняют одну и ту же задачу)

вот моя задача:

// Process nunjucks html files (.nunjucks)
gulp.task('nunjucks', function() {
  'use strict';
  return gulp.src('src/html/pages/**/*.nunjucks')
    .pipe(plumber(
      { errorHandler: onError }
    ))
    .pipe(data(function(file) {
      return require('./src/model/' + path.basename(file.path) + '.json');
    }))
    .pipe(data(function() {
      return require('./src/model/globals.json');
    }))
    .pipe(nunjucks({
      searchPaths: ['src/html/templates']
    }))
    .pipe(extReplace('.html'))
    .pipe(gulp.dest('dist'))
    .pipe(reload({stream:true}))
});

и вот весь мой gulpfile на случай, если проблема кроется в другом месте, и я просто не заметил ее: http://pastebin.com/q9vc8h6i

Любые идеи?


person Alex Foxleigh    schedule 17.02.2016    source источник


Ответы (1)


Это заняло некоторое время, но я нашел решение для этого. Я просто заменил закомментированную строку строкой под ней:

 .pipe(data(function(file) {
    //return require('./src/model/' + path.basename(file.path) + '.json');
    return JSON.parse(fs.readFileSync('./src/model/' + path.basename(file.path, '.nunjucks') + '.json'));
 }))

Изменить: мне также пришлось добавить var fs = require('fs') в начало gulpfile, это пакет узла, поэтому никаких дополнительных зависимостей не требовалось.

person Alex Foxleigh    schedule 25.02.2016