使用gulp-data和gulp-jade与目录一起使用

我有一个工作stream程,一切正常,但它似乎只能在最上面的文件,例如: public/index.html ,但如果我想要使用public/products/item.htmlpublic/products/item.html 数据会抛出一个错误,并寻找src/json/item.json而不是src/json/products/item.json

我觉得有一些错误,因为我用path.basename(file.path, '.jade') + '.json') ,它只会返回文件名,当然,如果是的话,如何使它也提供目录如果它抛出像products/item.jade东西?

 var basePath = { src: 'src/', dest: 'public/' } var src = { pages: basePath.src + 'jade/', json : basePath.src + 'json' } gulp.task('make:pages', function() { return gulp.src(src.pages + '**/!(_)*.jade') .pipe(plumber({ errorHandler: onError })) .pipe(data(function(file) { return JSON.parse(fs.readFileSync('src/json/' + path.basename(file.path, '.jade') + '.json')); })) .pipe(jade({ pretty: true })) .pipe(gulp.dest(basePath.dest)); }); 

提供我正在使用相同的文件夹结构:

 src ├── fonts ├── jade │  ├── _layout.jade │  ├── index.jade │  ├── product │  │  └── item.jade │  ├── partials │  │  ├── _footer.jade │  │  └── _header.jade ├── js ├── json │  ├── index.json │  ├── product │  │  └── item.json 

我用这个来代替:

 return JSON.parse(fs.readFileSync(file.path.replace(/jade/g, 'json'))); 

它的工作原理! 🙂