使用gulp-data和gulp-jade与目录一起使用
我有一个工作stream程,一切正常,但它似乎只能在最上面的文件,例如: public/index.html
,但如果我想要使用public/products/item.html
, public/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')));
它的工作原理! 🙂