gulp-nunjucks-html + gulp-数据未在手表上编译
gulp-nunjucks-html + gulp-data not compiling on watch
我写了一个 gulp 任务来从 json 个文件中获取数据并将其处理为 html。当我第一次 运行 构建时,它就像一个魅力,但是我已经设置了一个 watch 任务来执行此操作,尽管它会将 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}))
});
这是我的整个 gulp 文件,以防问题出在其他地方,而我只是没有发现它: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 的顶部,它是一个节点包,因此不需要额外的依赖项。
我写了一个 gulp 任务来从 json 个文件中获取数据并将其处理为 html。当我第一次 运行 构建时,它就像一个魅力,但是我已经设置了一个 watch 任务来执行此操作,尽管它会将 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}))
});
这是我的整个 gulp 文件,以防问题出在其他地方,而我只是没有发现它: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 的顶部,它是一个节点包,因此不需要额外的依赖项。