json - gulp-nunjucks-html + gulp-data 未在 watch 上编译

标签 json gulp gulp-watch nunjucks

我编写了一个 gulp 任务来从 json 文件中获取数据并将其处理为 html。当我第一次运行构建时,这就像一个魅力,但是我设置了一个监视任务来执行此操作,虽然它会将 nunjucks 文件重建为 html,但它似乎会忽略 json,直到下一个完整构建(即使 watch 所做的只是运行相同的任务)

这是我的任务:

// 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

有什么想法吗?

最佳答案

花了一段时间,但我找到了解决办法。我刚刚用它下面的行替换了注释掉的行:

 .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 的顶部,它是一个节点包,因此不需要额外的依赖项。

关于json - gulp-nunjucks-html + gulp-data 未在 watch 上编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35456748/

相关文章:

javascript - gulp 错误 : Cannot find module 'jshint/src/cli'

javascript - 巴别塔配置 "strict mode"

node.js - 无法在字符串上创建属性 'mark'

sass - Gulp TypeError : Arguments to path. 连接必须是字符串

gulp - gulp 4 中的错误处理

json - CloudFormation 存储桶策略 - 缺少必填字段 "Effect"

javascript - jQuery AJAX JSON 自动刷新使用动画显示数据不起作用

javascript - 如何在 ASP.NET MVC 中从 JSON 呈现 FullCalendar 中的事件?

python (gspread) - 整个数据表放置在我的 Google Sheets 的一个单元格中,而不是单独的单元格中

javascript - 如何在 gulp.src.options.base 中动态解析路径